For example, I want to execute the "initRegister" method in Controller only after a user click the "Register" button in the page
@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 invoked by "Register" button: (show a small popup window for registration)
$.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>');
}
);
However I got the following error in the browser when I access "http://localhost:8080/.../initPage.do"
Neither BindingResult nor plain target object for bean name 'reg' available as request attribute
The page works only if I move "model.addAttribute("reg", new RegisterForm());" to "initPage" method. But I don't need to create a RegisterForm instance until a uesr click "Register" button.
How to solve it?