gpt4 book ai didi

java - Struts 2 表单标签中的多个提交按钮

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:44 24 4
gpt4 key购买 nike

我试图将表单标记中的按钮指向与表单不同的操作/操作类,但它不起作用。我在另一个线程中读到这是由于 Struts 2 中的错误造成的,并且应该设置 struts.mapper.action.prefix.enabled"="true",所以我这样做了,但它仍然是一样的。

我可以使用不同的操作来指向表单正在使用的同一操作类的不同方法,但是当我尝试指定不同的操作类时,它不起作用。

这有效,

(jsp)

<s:form action="print">     
<s:iterator value="itemList">
<s:radio theme="simple" name="item" list="#{id:name}" />
</s:iterator>

<div id="functionButtons">
<s:submit key="button.submit" />
<s:submit action="cancel" key="button.cancel"/>
</div>

</s:form>

(struts.xml)

<constant name="struts.mapper.action.prefix.enabled" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />

...

<action name="print" class="...PrintItem" method="perform" >
<result name="success">/successJSP.jsp</result>
</action>

<action name="cancel" class="...PrintItem" method="cancel" >
<result name="CANCEL" type="redirectAction">homePage</result>
</action>

( Action )

public class PrintItem extends BaseAction {

@Override
public String perform() throws Exception {

doPrintLogic();
return SUCCESS;

}

public String cancel(){

return "CANCEL";

}
}

但是如果我将 struts.xml 中的“取消”操作映射更改为

<action name="cancel" class="...CancelFormAction" method="perform" > 
<result name="CANCEL" type="redirectAction">trnsfr</result>
</action>

没有

这正常吗?是否可以从已映射到一个操作类的表单中映射到不同的操作类?

最佳答案

这是正常的,因为您只能将表单映射到由表单标记的 action 属性指定的一个操作(历史上在 HTML 中)。提交按钮不会更改该映射,而是调整操作映射器以使用不同的操作,因为前缀已启用。因此,如果您需要更改此行为,您可以动态更改表单映射或更改默认操作映射器等。但是,如果操作实例已创建,则会出现问题。因此,您应该使用默认操作映射器。但是您的帖子 struts.mapper.action.prefix.enabled"="true" 中有一个拼写错误。在提交按钮上启用操作的常量是

<constant name="struts.mapper.action.prefix.enabled" value="true"/>

或者如果您使用struts.properties

struts.mapper.action.prefix.enabled=true

关于java - Struts 2 表单标签中的多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com