たとえば、ユーザーがページの「登録」ボタンをクリックした後にのみ、コントローラーで「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 インスタンスを作成する必要はありません。
それを解決する方法は?