5

ここで複数の例を見た後でも、何らかの理由でこの問題を修正できないようです。

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);
}

}

4

4 に答える 4

8

reverse.jsp ファイルで、modelAttribute を reverseString として追加しました。したがって、reverse.jsp をロードする前に、ReverseString.java オブジェクトを探します。

ユーザーをreverse.jspにナビゲートするコントローラーメソッドのリクエストスコープにReverseString.javaオブジェクトを追加するだけです。

例えば

@RequestMapping(value = "/getReverseStringForm")
  public String cmLogin(Model model) {
    model.addAttribute(new ReverseString());
    return "reverse";
  }
于 2013-05-28T11:17:46.540 に答える
0

私にとって、このエラーは宣言することで解決されました

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

コントローラーで。また、jsp では、クラス名を参照してモデル属性を参照します。

<form:input  path="person.firstName" />
于 2016-05-22T20:09:40.720 に答える
0

@ModelAttribute("reverseString")onSubmit メソッドのパラメーターを追加してみてください。

protected ModelAndView onSubmit(HttpServletRequest request,
        HttpServletResponse response, @ModelAttribute("reverseString") ReverseString revString, BindException errors)
        throws Exception
于 2013-05-28T09:30:49.587 に答える