2015-08-19 35 views
0

我在模态窗口中有一个窗体。这个模式窗口可以出现在我网站的任何页面上。从这种形式我想发送信息到我的控制器,但我得到一个例外。让我来介绍我的代码:Spring MVC IllegalStateException

这是我的控制器:

@RequestMapping(value = "/update-profile.html", method = RequestMethod.POST) 
public String modalUpdateProfile(
    @ModelAttribute("profile") Profile profil, BindingResult result, 
    Errors errors, RedirectAttributes ra 
) { 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 

    if (!result.hasErrors()) { 
     profileService.modifyAndUpdate(profil, auth.getName()); 
     return "redirect:/profilul-meu.html"; 
    } 
    return "my-profile"; 
} 

这是我的表格:

<form:form method="POST" modelAttribute="profile" class="form-horizontal" 
    action="${pageContext.request.contextPath}/update-profile.html"> 
    <div class="col-md-5"> 
     <div class="form-group"> 
      <label for="nume">First Name: </label> 
      <form:input id="nume" type="text" class="form-control" 
       path="first_name" /> 
     </div> 
     <div class="form-group"> 
      <label for="prenume">Second Name: </label> 
      <form:input id="prenume" type="text" class="form-control" 
       path="second_name" /> 
     </div> 
</form:form> 

这是我dipsatcher-servlet.xml中:

<mvc:annotation-driven /> 
<mvc:resources mapping="/resources/**" location="/resources/" /> 
<context:component-scan base-package="com.gab.gsn.controller" /> 

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/template-def/general.xml</value> 
     </list> 
    </property> 
</bean> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.tiles3.TilesView" /> 
</bean> 

因此,当我想访问我的应用程序的一页时,我收到以下消息:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'profile' available as request attribute 
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) 
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:117) 
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) 
    org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) 
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) 
    org.apache.jsp.WEB_002dINF.template_002ddef.layout_jsp._jspx_meth_form_005finput_005f0(layout_jsp.java:2343) 
    org.apache.jsp.WEB_002dINF.template_002ddef.layout_jsp._jspService(layout_jsp.java:416) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    org.apache.tiles.request.servlet.ServletRequest.forward(ServletRequest.java:265) 
    org.apache.tiles.request.servlet.ServletRequest.doForward(ServletRequest.java:228) 
    org.apache.tiles.request.AbstractClientRequest.dispatch(AbstractClientRequest.java:57) 
    org.apache.tiles.request.render.DispatchRenderer.render(DispatchRenderer.java:47) 
    org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:259) 
+0

你的表单GET处理程序在哪里? –

回答

0

需要在类似..modalUpdateProfile(...,Model model)的控制器中添加模型属性并将模型对象添加到模型中。