如何在 struts 中调用与执行不同的方法?
How to call different method from execute in struts?
在我的 Struts 应用程序中,我有一个名为 Foo 的操作。
<action name="Foo" class="some.path.here.foo">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
通常它会调用 execute(),但我想调用另一个名为 change() 的方法。我该怎么做?
我的想法是这样的:
<form name="Foo" action="Foo" >
<s:textfield name="Mail" placeholder="Mail" />
<select name="someselect">
<s:iterator value="someblabla">
<option value="<s:property value="somevalue"/>" label="<s:property value="Description"/>"><s:property value="Name"/></option>
</s:iterator>
</select>
<s:submit method="change" value="Go!"></s:submit>
</form>
但是当我想这样做时,我得到
HTTP Status 404 - No result defined for action some.path.is.here.Foo and result input
你能帮帮我吗?
执行是动作中的默认方法。如果您想更改它,我认为您可以通过添加 "method" 属性来修改您的操作描述。像这样:
<action name="Foo" class="some.path.here.foo" method="change">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
希望对您有所帮助
您收到错误是因为,除非您明确指定,否则 struts 需要 'execute' 方法。如果您的操作方法名称不同,则必须使用参数 'method'.
明确指定它
所以你的代码应该是
<action name="Foo" class="some.path.here.foo" method="change">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
Struts2还支持通配符方法和动态方法调用。 DMI 不太安全,并且不是首选。请参阅文档 here
在我的 Struts 应用程序中,我有一个名为 Foo 的操作。
<action name="Foo" class="some.path.here.foo">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
通常它会调用 execute(),但我想调用另一个名为 change() 的方法。我该怎么做?
我的想法是这样的:
<form name="Foo" action="Foo" >
<s:textfield name="Mail" placeholder="Mail" />
<select name="someselect">
<s:iterator value="someblabla">
<option value="<s:property value="somevalue"/>" label="<s:property value="Description"/>"><s:property value="Name"/></option>
</s:iterator>
</select>
<s:submit method="change" value="Go!"></s:submit>
</form>
但是当我想这样做时,我得到
HTTP Status 404 - No result defined for action some.path.is.here.Foo and result input
你能帮帮我吗?
执行是动作中的默认方法。如果您想更改它,我认为您可以通过添加 "method" 属性来修改您的操作描述。像这样:
<action name="Foo" class="some.path.here.foo" method="change">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
希望对您有所帮助
您收到错误是因为,除非您明确指定,否则 struts 需要 'execute' 方法。如果您的操作方法名称不同,则必须使用参数 'method'.
明确指定它所以你的代码应该是
<action name="Foo" class="some.path.here.foo" method="change">
<result name="SUCCESS" type="tiles">/foo.tiles</result>
</action>
Struts2还支持通配符方法和动态方法调用。 DMI 不太安全,并且不是首选。请参阅文档 here