복붙노트

[SPRING] Spring MVC BindingResult 나 bean name을위한 평범한 대상 객체가 아니다.

SPRING

Spring MVC BindingResult 나 bean name을위한 평범한 대상 객체가 아니다.

어떤 이유로 여기에서 여러 예제를 살펴본 후에도이 문제를 해결할 수 없습니다.

Spring 3 MVC를 사용하여 양식을 처리하려고하지만 다음 오류가 발생합니다.

 Neither BindingResult nor plain target object for bean name 'reverseString' available as request attribute

그래서 나는 여기서 문제가되는 것을 얻고 있지만, 나는 그것을 풀지 못했습니다. 내 방법은 여기에있다.

SimpleFormController를 확장하는 ReverseController 클래스 :

protected ModelAndView onSubmit(HttpServletRequest request,
        HttpServletResponse response, Object command, BindException errors)
        throws Exception {
    ReverseString revString = (ReverseString) command;
    ModelAndView mav = new ModelAndView();
    ModelMap map = new ModelMap();
    map.addAttribute("reverseString", revString);
    mav.addAllObjects(map);
    return mav;
}

내 app-servlet.xml은 컨트롤러를 다음과 같이 정의합니다.

<bean name="/reverse.app" class="ReverseController">
    <property name="commandName" value="reverseString"></property>
    <property name="commandClass" value="ReverseString" />
    <property name="successView" value="reverseResult" />
    <property name="formView" value="reverse" />
</bean>

이것은 내 reverse.jsp의 양식입니다.

<form:form method="POST" modelAttribute="reverseString" action="handleForm">
<form:errors path="*" cssClass="errorblock" element="div" />
    <table>
        <tr>
            <td>String to be reversed:</td>
            <td><form:input path="stringToReverse" />
            </td>
            <td><form:errors path="stringToReverse" cssClass="error" />
            </td>
        </tr>
        <tr>
            <td colspan="3"><input type="submit" /></td>
        </tr>
    </table>
</form:form>

그리고 이것이 내 web.xml에 정의 된 것입니다.

 <web-app>
  <display-name>Spring Reverse String</display-name>      
  <welcome-file-list>
      <welcome-file>reverse.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
      <servlet-name>app</servlet-name>
      <servlet-class>Dispatcher</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
        <servlet-name>app</servlet-name>
        <url-pattern>*.app</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>contextConfigLocation</param-name>        
    <param-value>/WEB-INF/app-servlet.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

마지막으로 이것은 내 ReverseString 객체입니다.

public class ReverseString {

public String stringToReverse;
public String reversedString;

public ReverseString(String rawString) {
    this.reversedString = reverseString(stringToReverse);
}

public String getStringToReverse() {
    return stringToReverse;
}

public void setStringToReverse(String stringToReverse) {
    this.stringToReverse = stringToReverse;
}

public String reverseString(String rawString) {
    if(rawString == null || rawString.length() <= 1) return rawString;
    return reverseString(rawString.substring(1)) + rawString.charAt(0);
}

}

해결법

  1. ==============================

    1.reverse.jsp 파일에서 modelAttribute를 reverseString으로 추가했습니다. 따라서 reverse.jsp를로드하기 전에 ReverseString.java 오브젝트를 찾습니다.

    reverse.jsp 파일에서 modelAttribute를 reverseString으로 추가했습니다. 따라서 reverse.jsp를로드하기 전에 ReverseString.java 오브젝트를 찾습니다.

    사용자를 reverse.jsp로 이동시키는 컨트롤러 메소드의 요청 범위에 ReverseString.java 객체를 추가하기 만하면됩니다.

    e.

    @RequestMapping(value = "/getReverseStringForm")
      public String cmLogin(Model model) {
        model.addAttribute(new ReverseString());
        return "reverse";
      }
    
  2. ==============================

    2.내가이 자기 자신을 발견했기 때문에이 예외는 대부분 컨트롤러에 대한 경로가 잘못되었을 때 나타난다. 또는 구문 오류. 따라서 JSP와 경로의 모든 링크가 올바른지 매우 신중히 확인하십시오. 왜냐하면 '/'조차도 예외의 이유가 될 수 있기 때문입니다.

    내가이 자기 자신을 발견했기 때문에이 예외는 대부분 컨트롤러에 대한 경로가 잘못되었을 때 나타난다. 또는 구문 오류. 따라서 JSP와 경로의 모든 링크가 올바른지 매우 신중히 확인하십시오. 왜냐하면 '/'조차도 예외의 이유가 될 수 있기 때문입니다.

  3. ==============================

    3.onSubmit 메소드의 매개 변수에 @ModelAttribute ( "reverseString")를 추가하십시오.

    onSubmit 메소드의 매개 변수에 @ModelAttribute ( "reverseString")를 추가하십시오.

    protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, @ModelAttribute("reverseString") ReverseString revString, BindException errors)
            throws Exception
    
  4. ==============================

    4.나에게이 오류는 선언함으로써 해결되었다.

    나에게이 오류는 선언함으로써 해결되었다.

    @ModelAttribute("person")
    public Person createFormModelAttribute() {
        return new Person();
    }
    

    컨트롤러에서. 또한 jsp에서 클래스 이름을 참조하여 모델 속성을 참조합니다.

    <form:input  path="person.firstName" />
    
  5. from https://stackoverflow.com/questions/16787938/spring-mvc-neither-bindingresult-nor-plain-target-object-for-bean-name by cc-by-sa and MIT license