struts.xml:
<action name="index" class="categoryAction">
<result name="success">/catalog/Main.jsp</result>
</action>
<action name="viewCart" method="viewCart" class="accountAction">
<result name="success">/cart/Cart.jsp</result>
</action>
<action name="signonForm" class="accountAction">
<result name="success">/account/SignonForm.jsp</result>
</action>
<action name="signon" method="signon" class="accountAction">
<result name="success">index.do</result>
</action>
我调用signon.do去校验登录,成功转发到index.do,但报错:
HTTP Status 404 - /petshop/shop/index.dotype Status reportmessage /petshop/shop/index.dodescription The requested resource (/petshop/shop/index.do) is not available.为什么会这样?如果result是redirect类型的,就正常,转发的时候,到底该怎么配置路径?
<action name="index" class="categoryAction">
<result name="success">/catalog/Main.jsp</result>
</action>
<action name="viewCart" method="viewCart" class="accountAction">
<result name="success">/cart/Cart.jsp</result>
</action>
<action name="signonForm" class="accountAction">
<result name="success">/account/SignonForm.jsp</result>
</action>
<action name="signon" method="signon" class="accountAction">
<result name="success">index.do</result>
</action>
我调用signon.do去校验登录,成功转发到index.do,但报错:
HTTP Status 404 - /petshop/shop/index.dotype Status reportmessage /petshop/shop/index.dodescription The requested resource (/petshop/shop/index.do) is not available.为什么会这样?如果result是redirect类型的,就正常,转发的时候,到底该怎么配置路径?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.objectFactory" value="spring"></constant>
<constant name="struts.action.extension" value="do" ></constant>
<package name="shop" namespace="/shop" extends="struts-default">
<global-results>
<result name="index">/shop/index.do</result>
</global-results>
<action name="index" class="categoryAction">
<result name="success">/catalog/Main.jsp</result>
</action>
<action name="viewCart" method="viewCart" class="accountAction">
<result name="success">/cart/Cart.jsp</result>
</action>
<action name="signonForm" class="accountAction">
<result name="success">/account/SignonForm.jsp</result>
</action>
<action name="signon" method="signon" class="accountAction">
<result name="success">index.do</result>
</action>
<action name="signoff" method="signoff" class="accountAction">
<result name="success">/shop/index.do</result>
</action>
<action name="editAccountForm" method="editAccountForm" class="accountAction">
<result name="success">/account/EditAccountForm.jsp</result>
</action>
<action name="editAccount" method="editAccount" class="accountAction">
<result name="success">/shop/index.do</result>
</action>
<action name="newAccountForm" class="accountAction">
<result name="success">/account/NewAccountForm.jsp</result>
</action>
<action name="newAccount" method="newAccount" class="accountAction">
<result name="success">/shop/index.do</result>
</action>
</package>
</struts>
默认是type=dispatcher
无论我是这样写:
<action name="signon" method="signon" class="accountAction">
<result type="chain" name="success">index.do</result>
</action>还是那样写:
<action name="signon" method="signon" class="accountAction">
<result type="chain" name="success">/shop/index.do</result>
</action>报错都一样:
HTTP Status 404 - There is no Action mapped for namespace /shop and action name index.do.type Status reportmessage There is no Action mapped for namespace /shop and action name index.do.description The requested resource (There is no Action mapped for namespace /shop and action name index.do.) is not available.
Apache Tomcat/6.0.20
写成index就OK了,不过它也只适用于当前包啊,如何写别的包的action?谢谢,而且struts2好像没有全局result,只有包范围的全局。
<result type="chain/redirectAction">
<param name="namespace">其他名称空间</param>
<param name="actionName">action的名字</param>
</result>
....
<global-results>
<result name="login" type="dispatcher">
<param name="location">login.jsp</param>
</result>
....
<global-results>
<result name="login" type="dispatcher">
<param name="location">login.jsp</param>
</result> 楼上的代码,拿来用用,并不是因为使用了default包,而是因为使用了默认的namespace也就是/
A root namespace ("/") is also supported. The root is the namespace when a request directly under the context path is received. As with other namespaces, it will fall back to the default ("") namespace if a local action is not found.