我有一个带有模式struts 2 jquery 对话框的主页,该对话框调用包含 struts 表单的 struts2 操作。
主页对话框代码
<s:url id="newItemURL" var="newItemURL" action="addNewItem" />
<sj:dialog id="newItem" href="%{newItemURL}" title="Create New Item" width="700" position="top" autoOpen="false"
loadingText="Loading..." />
<sj:a id="addNewItem" openDialog="newItem" button="true" buttonIcon="ui-icon-refresh">New Item</sj:a>
addNewItem Action Result JSP
如果成功,此表单提交并生成文本结果。
<div id="newItemForm">
<s:form action="addNewItem" id="addNewItem">
<fieldset>
<legend>Create a new item</legend>
<label for="description">Description: </label>
<s:textarea id="description" name="item.description" label="Description:" cols="20" rows="5"/><br />
<sj:submit id="submitNewItem" targets="resultNewItem" value="Submit" indicator="indicator" button="true" replaceTarget="true" />
</fieldset>
</s:form>
</div>
<div id="resultNewItem"></div>
addNewItem 表单可以单独使用<sj:head />
,AJAX 结果显示在 resultNewItem div 中。<sj:head />
必须在 addNewItem JSP 中删除以避免与主页冲突。
问题是当 addNewItem Action 在提交表单时包含在对话框中时,调用了主页操作,因此我最终在对话框中找到了另一个主页。
我该如何解决这个问题?
编辑:
Struts 配置
<action name="homepage"
class="com.actions.Homepage">
<result name="success" type="tiles">Homepage</result>
</action>
<action name="AddNewItem" class='com.actions.AddNewItem'>
<result name="success">/WEB-INF/jsp/addNewRisk/addNewRisk.jsp</result>
</action>
<action name="smoAddNewRiskINSERT" class="com.actions.AddNewItem" method="addNewRisk">
<result name="success">/WEB-INF/jsp/addNewRisk/success.jsp</result>
<result name="error">/WEB-INF/jsp/addNewRisk/error.jsp</result>
</action>
我想要实现的 用户单击按钮加载对话框,创建 addNewItem 表单(AddNewItem 操作),当用户提交表单时,它通过 AJAX 提交按钮发送,结果显示在对话框中。