【问题标题】:Auto-submit form with hidden value具有隐藏值的自动提交表单
【发布时间】:2015-05-03 00:49:36
【问题描述】:

在我的 Struts2 应用程序中,我想将隐藏值从 JSP 文件传递​​到 Action 类。这将是此 JSP 页面的唯一用途,因此实际上它将充当重定向页面,其中包含隐藏值。我的代码:

<form action="editexperiment" method="post">
    <s:hidden name="id" value="%{id}"/>
    <button type="submit">Submit</button>
</form>

上面的代码有效,但显然我不想点击提交按钮,那么我怎样才能删除它并自动提交这个(隐藏的)表单?我知道我可以使用 JavaScript 轻松实现这一点,但这不是我的首选解决方案。

【问题讨论】:

  • ... 除了使用 JavaScript 之外,您还能怎么做呢?甚至为此使用表单有什么意义?
  • 戴夫,这正是我的疑问。关于你的第二个问题,如果有另一种方法可以直接将变量从一个动作发送到另一个动作,而不使用表单,我很想知道。我也没有提到使用会话对象,因为这个变量将精确地用作从会话映射中获取对象的键。
  • 作为 URL 参数?它的存储位置(会话或作为参数传递)并不真正相关。如果您在 JSP 页面中提供了它,那么它显然在服务器端可用,并且您根本不需要公开它。拥有一个仅用于使用您从服务器端提供的 ID 进行重定向的页面似乎很奇怪,因为您可以从操作的配置中进行重定向。
  • 我同意这个解决方案不是更优雅,但它是我自己能想到的最好的解决方案。 URL 参数解决方案对我来说不是一个选项,因为我不想将变量公开给用户。感谢您的意见,请参阅下面接受的答案。
  • this gist 中,因为太长,无法清晰地看到评论。

标签: jsp struts2 form-submit hidden-field


【解决方案1】:

您是否考虑过使用 redirectAction 结果从 ActionOne 传递到 ActionTwo 而不需要上述 JSP,而不是从 ActionOne 分派一个 JSP 页面,它会自动向 ActionTwo 发送一个新请求?

您可以传递参数(even dynamically,直到某一点),如下所示:

<action name="actionOne" class="foo.bar.ActionOne" >
    <result name="success" type="redirectAction">
        <param name="actionName">actionTwo</param>
        <param name="id">${id}</param>
    </result>
</action>

id 必须与 actionOne 中的 getter 和 actionTwo 中的 setter 匹配。

【讨论】:

  • 这正是我想要的,一个更优雅的解决方案。我经常使用redirectAction 结果,但我不知道可以在其中传递参数。非常感谢。我喜欢 SO,标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多