查看文档 here我认为我应该可以使用提交按钮转到与包含该按钮的action
form
属性不同的操作。但是,当我使用下面的代码时,当我点击按钮时,它会转到nameSearch
操作而不是newRequest
操作。 nameSearch
操作与namespace
操作的行为不同newRequest
。这会导致问题吗?任何帮助将不胜感激!
<s:form action="nameSearch" method="post" validate="false">
<div class="col-sm-6 col-xs-12 text-right">
<s:submit action="newRequest" value="Cancel" />
</div>
</s:form>
编辑:相关的xml代码是
<package name="eval" namespace="/eval" extends="default">
<action name="newRequest" class="gov.mo.dnr.egims.controller.evaluation.NewRequestAction">
<result name="success" type="tiles">newRequest</result>
<result name="error" type="tiles">error</result>
</action>
<action name="newRequest_NameSearch" class="gov.mo.dnr.egims.controller.evaluation.NewRequestAction" method = "generateNameList">
<result name="success" type="tiles">newRequest</result>
<result name="nameSearch" type="tiles">nameSearch2</result>
<result name="error" type="tiles">error</result>
</action>
</package>
<package name="req" namespace="/req" extends="default">
<action name="nameSearch" class="gov.mo.dnr.egims.controller.request.NameSearchAction">
<result name="success" type="tiles">nameSearch</result>
<result name="error" type="tiles">error</result>
</action>
</package>
我通过newRequest_NameSearch
操作转到按钮。我尝试将按钮的action
属性更改为action="/eval/newRequest"
,但仍然转到nameSearch
操作。
答案 0 :(得分:0)
需要有关struts.xml的更多信息。我想框架无法在命名空间newRequest
中找到/
,然后又回到nameSearch
。
查看Struts documentation的示例:
<package name="default">
<action name="foo" class="mypackage.simpleAction">
<result name="success" type="dispatcher">greeting.jsp</result>
</action>
<package name="mypackage2" namespace="/barspace">
<action name="bar" class="mypackage.simpleAction">
<result name="success" type="dispatcher">bar2.jsp</result>
</action>
</package>
如果向/barspace/foo.action
发出请求,将检查名称空间/barspace
是否为foo。如果未找到本地操作,则检查默认命名空间。在命名空间示例中,命名空间foo
中没有操作/barspace
,因此将检查默认值并执行/foo.action
。