【问题标题】:Two buttons in <s:form> to decide in the action class<s:form> 中的两个按钮来决定动作类
【发布时间】:2014-05-01 19:50:22
【问题描述】:
有可能做这样的事情吗?
<s:form action="formAction1" namespace="/form1">
<s:form action="formAction2" namespace="/form2">
<s:textfield name="user"/>
<s:password name="pwd" />
<s:submit name="sub1" value="start1">
<s:submit name="sub2" value="start2">
</s:form>
</s:form>
即如果我点击start1按钮,那么formAction1将被提交,
否则当点击start2 时,将提交formAction2。
实际上,我希望在 单一形式中对 2 个不同的按钮 进行 2 个不同的操作。
我不想使用url<s:url>标签。
【问题讨论】:
标签:
java
forms
jsp
button
struts2
【解决方案1】:
不,这在 HTML 中是不可能的,在 Struts2 中也不可能。您不应该有嵌套表单,但您可以在页面上使用多个表单。
<s:form>
<s:textfield name="user"/>
<s:password name="pwd" />
<s:submit name="sub1" value="start1" action="formAction1">
<s:submit name="sub2" value="start2" action="formAction2">
</s:form>
另见How to align two submit buttons?。还有关于如何配置 Struts2 以使用动作前缀的信息。
【讨论】:
-
@AbhishekRaj 如果此答案帮助您解决了问题,则应将其标记为已接受。如果您有任何问题,请参阅About 页面。
【解决方案2】:
正如您在代码中显示的那样,这是不可能的;但是您可以拥有一个包含多个按钮的表单,并且可以对每个按钮执行不同的操作。
你可以使用下面的代码来实现它
<s:form method="post" action="mySubmitAction">
// your form fields
<s:submit value="Submit"/>
<s:submit value="Clear" action="myClearAction"/>
</form>
这里如果你点击第一个按钮mySubmitAction会被调用。
如果您点击第二个按钮myClearAction 将被调用(因为我们在第二个按钮中提供了action 属性,而不是mySubmitAction 动作myClearAction 动作将被调用)。
您可以在这两个操作中访问所有表单字段。
希望这会对你有所帮助。