我已经关注了apache教程,但以下代码遇到错误。
错误>>>>
Caused by: org.xml.sax.SAXParseException; systemId:
file:/C:/Users/target/Project-1.0/WEB-
INF/classes/struts.xml; lineNumber: 53; columnNumber: 15; The content of element type "package"
must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-
class-ref?,global-results?,global-exception-mappings?,action*)".
请注意,操作和包正确定义为将其运行的重定向代码复制到错误中。 代码
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="UnderConstruction"></default-action-ref>
<action name="UnderConstruction">
<result>notFound.jsp</result>
</action>
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<action ....>
</action>
,,,
</package>
当我更改以下内容时
<result>notFound.jsp</result>
到
<result type="tiles">notFound.jsp</result>
应用程序将被运行,但是当我输入错误的地址时,它不会显示notFound.jsp页面,只是抛出一个未找到的操作异常。
当我尝试以下代码时,应用程序会运行,但它不会将错误的请求重定向到underconstruction页面
<package name="default" namespace="/" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<action ....>
</action>
,,,
</package>
<package name="Hello" extends="struts-default">
<default-action-ref name="UnderConstruction"></default-action-ref>
<action name="UnderConstruction">
<result>notFound.jsp</result>
</action>
</package>
答案 0 :(得分:3)
您显示的上述配置适用于磁贴集成。你不能简单地复制粘贴并让它像火箭一样工作。然而,有多种方法可以实现您的目标,其中一些方法如下:
第一个approch
为错误或异常
创建全局结果声明<global-results>
<result name="error">/Error.jsp</result>
<result name="specific_exception">/Unique.jsp</result>
<result name="login" type="redirectAction">Login.jsp</result>
</global-results>
并验证并从基于操作的动画中返回相应的字符串错误或成功。
第二个approch
您可以在动作映射中重定向自己
<action name="your_action_name">
<result type="success">Success.jsp</result>
<result type="error">notFound.jsp</result>
</action>