0

私はSpring Formタグを独学していますが、解決できなかった単純なエラーに遭遇しました。このアプリをブラウザで起動すると、次のエラーが表示されます。

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'index' available as request attribute

Google検索で出てきた修正のほとんどを試しましたが、役に立ちませんでした。誰かが私が間違った場所を見つけることができますか? 以下は、関連するコンポーネントです。どうもありがとう。

コントローラ:

@Controller
@RequestMapping("/registration")
public class LoginController {

    @RequestMapping(method = RequestMethod.GET)
    public String setupForm(ModelMap model) {
        Registration registration = new Registration();
        model.addAttribute("registration", registration);
        return "index";

    }


    @RequestMapping(method = RequestMethod.POST)
    public String onSubmit(@ModelAttribute("registration") Registration registration, Map model) {
        return "success";
    }
}

JSP (/index.jsp):

        <form:form commandName="index">
        <table border="0" cellspacing="12">
            <tr>
                <td>
                    <form:input path="email"/>
                </td>
            </tr>

            <tr>
                <td>
                    <form:password path="password"/>
                </td>
            </tr>

            <tr>
                <td>
                    <input type="submit" value="Submit"/>
                </td>
            </tr>
        </table>
    </form:form>

コマンド オブジェクト (Registration.java) :

public class Registration {
    private String password;
    private String email;
    // getters,setters
4

3 に答える 3

0

インデックスページで以下を修正して試してください

<form:form commandName="index"><form:form commandName="registration">

上記がうまくいかない場合は、このようにすることもできます

<form:form modelAttribute="registration" commandName="registration">

ありがとう

于 2012-10-31T12:28:51.297 に答える
0

表示されるエラーは、フォームを送信するときに @ModelAttribute アノテーションに関連付けられた Binding Result が必要であるためです。

コードを次のように変更してみてください:

    @RequestMapping(method = RequestMethod.POST)
    public String onSubmit(@ModelAttribute("registration") Registration registration, BindingResult result, Map model){
          return "success";
       }

また、Model Attribute の直後に Binding Result オブジェクトが続く必要があることにも注意してください。

また、2 つの @ModelAttributes を使用している場合は、それぞれに独自のバインディング結果オブジェクトが必要です。

すべての関連ドキュメントについては、Spring ソース ガイドを参照してください。

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

于 2012-10-31T23:07:32.593 に答える