【问题标题】:Validation with one action and multiple JSP pages in Struts 2在 Struts 2 中使用一个操作和多个 JSP 页面进行验证
【发布时间】: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 代码中并使用&lt;s:if&gt; 来显示我想要的表单来解决这个问题,但我认为拥有两个单独的 JSP 文件会使每个 JSP 文件更易于管理和调试。

我想使用一个Action,以便在用户提交评论时更轻松地保持maininfo 字段的所有更改。

有没有办法让一个Action&lt;results&gt; 去到不同的JSP 页面并且验证失败返回到相应的JSP 页面?

【问题讨论】:

  • 听起来您将两种不同的操作混为一谈。最简单的解决方案是在同一个动作中提交到不同的方法。另一个简单的解决方案是包含一个标识表单的隐藏字段,或者根据存在的表单数据进行计算。
  • 我确实在操作中提交了不同的方法。当他们单击“添加评论”时,我提交返回“addFundingComment”的方法,该方法显示“addFundingComment.jsp”页面。当他们单击“提交评论”时,我提交将评论存储在数据库中的方法并返回显示“maininfo.jsp”页面的“成功”。我同意我可以在“maininfo.jsp”中隐藏评论表单,但我试图拥有两个较小的 jsp 文件而不是一个巨大的文件。
  • 我是说有两个动作配置了动作配置中指定的方法。然后,您可以有单独的“输入”结果,让框架完成工作,而不必手动完成。

标签: validation jsp struts2 tiles struts2-tiles-plugin


【解决方案1】:

您可以使用动态结果配置来返回相应的视图。动态属性是通过 OGNL 评估的,因此您必须创建一个 getter 方法来返回 input 结果的位置。

<result name="input" type="tiles">${inputName}</result>

在动作类中

public String getInputName() {
  String inputName = "maininfo";
  if (actionName.equals("addFundingComment")
     inputName = "addFundingComment";
  return inputName;
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-01-29
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多