Как передать скрытое значение в форме в Spring MVC 3.0?

Как передать скрытое значение в форме в Spring MVC 3.0

Я не могу присвоить значение скрытому полю, используя <form:hidden path="test" />. Как установить значение тестового поля и получить доступ к нему на стороне сервера.

спасибо

Ответ 1

<form:hidden path="test"  style="display:none"/>

Ответ 2

Это означает, что помимо скрытого тега у вас также есть такая форма:

<%@ 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;
    }
}

P.S. Я тестировал это с помощью Spring 3.1

ОБНОВЛЕНО: В этом примере работает нестабильно. Я знаю почему, но иногда он устанавливает свойство, где-то нет. Если у вас две формы Spring в одном jsp, этот подход может установить свойство для первого и не установить для второго или наоборот. Может быть, потому, что jsp: setProperty работает после тега форм Spring, может и не быть.

Ответ 3

Часто люди ошибочно передают некоторые значения как скрытые для формы, потому что они не могут иначе устанавливать эти поля в обновлении до предыдущих значений. Например, если я не передаю некоторые значения при обновлении формы, эти поля становятся нулевыми. Однако это неправильный способ обновления значений. Существует

@SessionAttributes ( "Правила" )

чтобы сделать это. После обновления вы можете настроить сеанс для завершения использования (состояние состояния SessionStatus) и status.setComplete() после завершения обновления. Если вы хотите получить некоторые значения, которых нет в модели, вы всегда можете использовать request.getParameter( "yourinputname" ); Вы можете использовать

Тип ввода = "скрытый"

чтобы установить некоторые значения, если вы хотите использовать в некоторых частях, таких как javascript (при использовании

${somevalueIdontwanttoshow}

не работает).

И если вы действительно хотите получить доступ к скрытой поданной попытке, используя

request.getParameter( "yourfiedl" )

прежде чем искать ошибки привязки.