0

たとえば、ユーザーがページの「登録」ボタンをクリックした後にのみ、コントローラーで「initRegister」メソッドを実行したい

@Controller
public class UserController
{

    @RequestMapping(method=RequestMethod.GET, value="/initPage.do")
    public String initPage(Model model)
    {
        return "home.jsp";
    }

    @RequestMapping(method=RequestMethod.GET, value="/initRegister.do")
    @ResponseBody
    public void initRegister(Model model)
    {
        model.addAttribute("reg", new RegisterForm());
    }
}

「登録」ボタンで呼び出される JQuery AJAX: (登録用の小さなポップアップ ウィンドウを表示します)

$.get('initRegister.do', function()
            { 
               $('body').append('<div>'
                   +'<form:form method="POST" modelAttribute="reg" '
                   + 'commandName="reg" action="register.do">'
                   + 'name: <form:input path="name"/>'
                   + '<input type="submit" value="Submit">'
                   + '</form:form>'
                   + '</div>');
            }
      );

ただし、「http://localhost:8080/.../initPage.do」にアクセスすると、ブラウザに次のエラーが表示されました。

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

このページは、「model.addAttribute("reg", new RegisterForm());」を移動した場合にのみ機能します。「initPage」メソッドに。しかし、ユーザーが「登録」ボタンをクリックするまで、RegisterForm インスタンスを作成する必要はありません。

それを解決する方法は?

4

1 に答える 1