struts2.1.8的配置问题

这一次非常有必要对strutsnamespace进行研究了,今天做了个项目,什么都成功了,后来我想着把jsp页面进行分类,然后由于namespace的问题而浪费很长时间。针对namespace来彻底研究下。

我的项目名为testBlog6

Webapp下建了page文件夹,再下面是open文件夹,最后error.jsp

配置文件,struts.xml

(错误的写法)

<package name="struts2" namespace="/page/open" extends="struts-default">   

 

<action name="login" class="org.cyxl.ssh.action.LoginAction" method = "select">

<result>/error.jsp</result>

</action>

</package>

这样会出现HTTP Status 404 - /testBlog6/error.jsp

错误的写法

<package name="struts2" namespace="/" extends="struts-default">   

 

<action name="login" class="org.cyxl.ssh.action.LoginAction" method = "select">

<result>/page/open/error.jsp</result>

</action>

</package>

会出现HTTP Status 404 - There is no Action mapped for action name page.

正确的写法:

<package name="struts2" namespace="/page/open" extends="struts-default">   

 

<action name="login" class="org.cyxl.ssh.action.LoginAction" method = "select">

<result>/page/open/error.jsp</result>

</action>

</package>

接下来是另一个问题,版本还是struts2.1.8.

<result name = "success" type = "redirectAction">index.action</result>

而用是struts2.3.7完全不存在这种问题。

要想用这,就必须得换成index。而不是indexAction

而且以前jsp中用得*.action都得换了,只能用*

struts.xml就这:(不包括package

<constant name="struts.multipart.saveDir" value="/tmp"/>

<include file="struts-default.xml" />


第三个:

无法理解,用的struts2.1.8,结果写了个action,这样的:

<struts>  

<constant name="struts.multipart.saveDir" value="/tmp"/>

<constant name="struts.ui.templateDir" value="template" />

<constant name="struts.ui.templateSuffix" value="ftl" />

<constant name="struts.objectFactory" value="spring" />

<constant name="struts.devMode" value="true" />

<constant name="struts.action.extension" value="do" />

<constant name="struts.custom.i18n.resources" value="application_messages" />

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

<include file="struts-default.xml" />

<constant name="struts.multipart.maxSize" value="9999999999" />

<package name="struts-whfood" extends="struts-default,json-default">

     <interceptors>

<interceptor-stack name="myStack">

<interceptor-ref name="defaultStack" />

</interceptor-stack>

</interceptors>

 <default-interceptor-ref name="myStack" />  

</package>

<package name="struts2" extends="struts-default">   

 

<action name="loginAction!*" class="org.cyxl.ssh.action.LoginAction" method = "{1}">

<result name="success">index.jsp</result>

<result name = "input">/page/open/error.jsp</result>

</action>

<action name="index" class="indexAction">

<interceptor-ref name="defaultStack" />   

<result name = "selete">/page/open/index.jsp</result>

<result name = "error">/page/open/error.jsp</result>

</action>

    </package>   

</struts> 

写了个action nameindex,然后我执行actionloginAction,结果直接执行了index,根本就没判断result。以后尽量避免将action设置成index吧。



你可能感兴趣的:(struts2.1.8的配置问题)