我的Struts提交选项卡上的我的操作属性不会将我发送到正确的struts操作

时间:2016-03-08 14:59:37

标签: struts2

查看文档 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操作。

1 个答案:

答案 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