【发布时间】:2017-06-22 14:37:40
【问题描述】:
我有一个表单,其中包含我提交评论的部分,而不是更新整个表单。
为了让我的 JSP 易于管理,我使用了以下 Struts 2 操作:
<action name="maininfo" class="MainInfo">
<result name="success" type="tiles">maininfo</result>
<result name="addFundingComment" type="tiles">addFundingComment</result>
<result name="input" type="tiles">maininfo</result>
</action>
maininfo 磁贴显示主表单 JSP 页面。 addFundingComment 磁贴显示提交评论的表单。
我的问题是,如果验证失败,"input" 结果必须转到maininfo 磁贴或addFundingComment 磁贴,但我需要它转到与验证失败的表单对应的磁贴。
我可以通过将addFundingComment JSP 代码放在maininfo JSP 代码中并使用<s:if> 来显示我想要的表单来解决这个问题,但我认为拥有两个单独的 JSP 文件会使每个 JSP 文件更易于管理和调试。
我想使用一个Action,以便在用户提交评论时更轻松地保持maininfo 字段的所有更改。
有没有办法让一个Action 和<results> 去到不同的JSP 页面并且验证失败返回到相应的JSP 页面?
【问题讨论】:
-
听起来您将两种不同的操作混为一谈。最简单的解决方案是在同一个动作中提交到不同的方法。另一个简单的解决方案是包含一个标识表单的隐藏字段,或者根据存在的表单数据进行计算。
-
我确实在操作中提交了不同的方法。当他们单击“添加评论”时,我提交返回“addFundingComment”的方法,该方法显示“addFundingComment.jsp”页面。当他们单击“提交评论”时,我提交将评论存储在数据库中的方法并返回显示“maininfo.jsp”页面的“成功”。我同意我可以在“maininfo.jsp”中隐藏评论表单,但我试图拥有两个较小的 jsp 文件而不是一个巨大的文件。
-
我是说有两个动作配置了动作配置中指定的方法。然后,您可以有单独的“输入”结果,让框架完成工作,而不必手动完成。
标签: validation jsp struts2 tiles struts2-tiles-plugin