如何使用Spring Controller中设置的值填充隐藏的表单字段

时间:2013-07-30 18:47:23

标签: java spring jsp spring-mvc jsp-tags

所有

我在Spring MVC中有一个控制器动作。此操作正在设置属性。我希望将此属性设置为表单中的隐藏值。

这是我的控制器动作:

@RequestMapping(method = RequestMethod.GET)
    public String showLoginForm(HttpServletRequest request, ModelMap model) 
    {
        //URL to redirect the User to after Authentication
        String gotoUrl = request.getParameter("goto");

        LoginForm loginForm = new LoginForm();
        model.addAttribute("gotoUrl", gotoUrl);
        model.put("loginForm", loginForm);
        return "loginform";
    }

在JSP表单中,我想要这样的东西:

<input type="hidden" name="goto" id="goto" value="${gotoUrl}" />

但是,根据JSP,这不是有效的语法。你能建议有效的语法吗?

谢谢,

这是堆栈跟踪错误:

javax.el.ELException: The identifier [gotoUrl] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.
    org.apache.el.parser.AstIdentifier.setImage(AstIdentifier.java:132)
    org.apache.el.parser.ELParser.Identifier(ELParser.java:1215)
    org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1191)
    org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1017)
    org.apache.el.parser.ELParser.Value(ELParser.java:966)
    org.apache.el.parser.ELParser.Unary(ELParser.java:948)
    org.apache.el.parser.ELParser.Multiplication(ELParser.java:712)
    org.apache.el.parser.ELParser.Math(ELParser.java:632)
    org.apache.el.parser.ELParser.Compare(ELParser.java:444)
    org.apache.el.parser.ELParser.Equality(ELParser.java:338)
    org.apache.el.parser.ELParser.And(ELParser.java:282)
    org.apache.el.parser.ELParser.Or(ELParser.java:226)
    org.apache.el.parser.ELParser.Choice(ELParser.java:183)
    org.apache.el.parser.ELParser.Expression(ELParser.java:175)
    org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:147)
    org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:44)
    org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:116)
    org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:172)
    org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:217)
    org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:67)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:984)
    org.apache.jsp.WEB_002dINF.views.loginform_jsp._jspService(loginform_jsp.java:176)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

2 个答案:

答案 0 :(得分:2)

您应该在

中更改'goto'名称和ID

<input type="hidden" name="goto" id="goto" value="${gotoUrl}" />

然后匹配新名称,替换

中的'goto'

request.getParameter("goto");

答案 1 :(得分:-1)

在body标签中设置如下:

<body onload="
   $('#goto').val('
    <c:if test="${gotoValueFromModel ne null}">
    <c:out value="${gotoValueFromModel}"/>
    </c:if>');
                     '
             " 
> 

   <form:form>
     <form:hidden  accesskey="goto" id="goto" path="goto" />
   </form:form>