如何在 Struts2 中提交表单的 URL 中传递参数

Posted

技术标签:

【中文标题】如何在 Struts2 中提交表单的 URL 中传递参数【英文标题】:How to pass a parameter in URL on a form submit in Struts2 【发布时间】:2012-11-02 15:36:24 【问题描述】:

我正在 Struts2 中做一个项目,我需要在 URL 中设置一个参数,例如下面链接中的用户参数。

我希望在单击表单提交按钮时传递此参数,而不是单独传递任何链接。我知道如何使用<s:url> 做到这一点,但这样我需要创建一个链接而不是表单提交。

有人可以帮我提供一个代码示例如何做到这一点吗? 我知道有一种方法可以使用 html 或 Struts1 来实现,但是如何使用 Struts2 来实现呢?如果struts.xml有办法做到这一点,请举例说明。

<form action="/example/xyz.action?user=george" method="POST">

【问题讨论】:

为什么不将值存储在隐藏字段中?当您提交表单时,它将自动提交。 有很多方法可以做到这一点。就像沙申克说的那样去隐藏领域,它是最整洁的。 你要每次都传这个参数吗?或者你为什么要在struts.xml这样做? @user1819548 我正在通过表单操作传递参数。这是你需要的吗? 【参考方案1】:

试试这个:

<s:form action="xyz.action" method="GET">
    <s:hidden name="user" value="george"/>
    // other fields
</s:form>

method="GET" 将在 url 上显示您的参数,&lt;s:hidden name="user" value="george"/&gt; 将采用您的参数。

这里也是一个例子Example

【讨论】:

这是最接近正确解决方案的方法。请参阅:***.com/questions/1116019/…。 TLTR:按照html标准,form标签的action属性中不应该有查询参数。 这不是正确的解决方案,因为它在 URL 中缺少参数。【参考方案2】:

如果您使用&lt;s:url&lt;s:form 标签,这是可能的。

<%@ taglib prefix="s" uri="/struts-tags" %>

<s:url id="xyzUrl" action="xyz" includeContext="false"><s:param name="user" value="george"/></s:url>
<s:form name="xyzForm" action="%xyzUrl" method="POST">

【讨论】:

以上是关于如何在 Struts2 中提交表单的 URL 中传递参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在不提交表单的情况下使用struts2提交标签作为按钮?

Struts2---将页面表单中的数据提交给Action

12-struts2防止表单重复提交

Struts2防止表单重复提交

struts2防止表单重复提交的解决方案

Struts2 表单提交与execute()方法的结合使用