如何在 Spring MVC 3.0 中的表单中传递隐藏值?

发布于 2024-10-23 12:23:55 字数 149 浏览 2 评论 0原文

如何在 Spring MVC 3.0 中的表单中传递隐藏值

我无法使用以下方式将值分配给隐藏字段 。如何设置测试字段的值并在服务器端访问它。

谢谢

How to pass a hidden value in a form in Spring MVC 3.0

I am not able to assign a value to a hidden field using
<form:hidden path="test" />. How can I set the value of the test field and access it on the server side.

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遗失的美好 2024-10-30 12:23:55
<form:hidden path="test"  style="display:none"/>
<form:hidden path="test"  style="display:none"/>
孤蝉 2024-10-30 12:23:55

值得注意的是,除了隐藏标签之外,您还有一个如下所示的表单:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<form:form action="/someAction" commandName="formBeanName" method="post">]
    <%--
        there you set needed properties
     --%>
    <form:hidden path="test" />
</form:form>

请注意,“formBeanName”是 java 类的属性名称,它存储在 HttpServletRequest 中,因此您可以简单地将其用作 bean!另外,不要忘记将 setter 和 getter 添加到您的秘密属性中。

<%--Set you secret property there--%>   
<jsp:setProperty name="formBeanName" property="test" value="sercret"/>

<form:form action="/someAction" commandName="formBeanName" method="post">]
    <%--
        there you set needed properties
     --%>
    <form:hidden path="test" />
</form:form>

public class FormBean {

    //other fileds

    private String test;

    public String getTest(){
        return this.test;
    }

    public String setTest(Strign test){
        return this.test = test;
    }
}

PS 我用 Spring 3.1 测试了这个

更新:这个示例工作不稳定。我确实知道为什么,但有时它会在某个地方没有设置属性。如果一个 jsp 中有两个 spring 表单,则此方法可以为第一个表单设置属性,而不为第二个表单设置属性,反之亦然。可能是因为 jsp:setProperty 在 spring forms 标签之后工作,也可能不是。

It is oblibiuos that besides a hidden tag you also have a form like this:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<form:form action="/someAction" commandName="formBeanName" method="post">]
    <%--
        there you set needed properties
     --%>
    <form:hidden path="test" />
</form:form>

Notice that the "formBeanName" is attribute name of java class, that was stored in HttpServletRequest, so you can simple use it as a bean! Also do not forget to add setter and getter to your secret property.

<%--Set you secret property there--%>   
<jsp:setProperty name="formBeanName" property="test" value="sercret"/>

<form:form action="/someAction" commandName="formBeanName" method="post">]
    <%--
        there you set needed properties
     --%>
    <form:hidden path="test" />
</form:form>

public class FormBean {

    //other fileds

    private String test;

    public String getTest(){
        return this.test;
    }

    public String setTest(Strign test){
        return this.test = test;
    }
}

P.S. I tested this with Spring 3.1

UPDATED: This example works unstable. I do know why, but sometimes it set property, somewhere no. If you have two spring forms in one jsp this approach can set property for first and not set for second or vice versa. May be because jsp:setProperty work after spring forms tag, may be not.

不醒的梦 2024-10-30 12:23:55

人们常常错误地将某些值作为隐藏传递到表单中,因为他们无法以其他方式将这些字段设置为更新为以前的值。例如,如果我在更新表单时未传递某些值,这些字段将变为空。然而,这是更新值的错误方法。有

@SessionAttributes("规则")

来做到这一点。更新后,您可以在更新完成后使用 (SessionStatus status) 参数和 status.setComplete() 将会话设置为完成。如果您想获取模型中没有的一些值,您可以随时使用 request.getParameter("yourinputname");您可以使用

输入类型=“隐藏”

设置一些值,如果你想在某些部分使用,如javascript(如果使用

${somevalueIdontwantwanttoshow}

不起作用)。

如果您确实想访问隐藏文件,请尝试使用

request.getParameter("yourfiedl")

在查看绑定错误之前。

Often people wrongly pass some values as hidden to form, because they cannot otherwise set those fields in update to previous values. E.g If I don't pass some values while updating to the form, those fields become null. However this is wrong way to update values. There is

@SessionAttributes("Rules")

to do that. After you update, you can set the session to complete using (SessionStatus status) parameter and status.setComplete() after the update is done. If you want to get some values that is not in model you can always use request.getParameter("yourinputname"); You can use

input type="hidden"

to set some values if you want to use in some parts like javascript (if using

${somevalueIdontwanttoshow}

does not work).

And if you really want to access the hidden filed try using

request.getParameter("yourfiedl")

before looking at binding errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文