Я использую Spring SimpleFormController для своих форм, и по какой-то причине он не перейдет к методу onSubmit
Вот мой код:
public class CreateProjectController extends SimpleFormController {
ProjectDao projectDao;
public CreateProjectController() {
setCommandClass(Project.class);
setCommandName("Project");
setSessionForm(true);
}
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
String id = request.getParameter("id");
Project project = projectDao.getProjectByOutsideId(id);
System.out.println("@formbacking object method");
System.out.println("the success view is "+getSuccessView());
return project;
}
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
Project project = (Project) command;
System.out.println("this is the project title: "+project.getTitle());
System.out.println("the success view is "+getSuccessView());
projectDao.insert(project);
return new ModelAndView(getSuccessView());
}
Я знаю, потому что он печатает строку "@formbacking object method", но не строку "view success is ..." и строку: "this is pr ...". Я вижу строку "@formback .." в консоли, но не последние два, когда я нажимаю "Отправить". Я не знаю, где проблема.
Это мой JSP
<form:form method="POST" commandName="Project">
Name: <form:input path="title"/><br/>
Description: <form:input path="description"/><br/>
Link: <form:input path="url" disabled="true"/><br/>
Tags: <form:input path="tags"/><br/>
Assessors <form:input path="assessors"/><br/><br/>
<input type="submit" value="submit"/>
</form:form>
Кстати, я работаю на Google App Engine. Может проблема в этом?
ОБНОВЛЕНИЕ: Кажется, проблема в методе formBackingObject. Когда я удалил его, форма теперь переходит в onSubmit, когда я нажимаю кнопку отправить.
Но я бы хотел, чтобы значения из класса команд из базы данных в моих формах.
Еще один фрагмент кода, который не работает:
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
String id = request.getParameter("id");
Project projectFromConsumer = projectDao.getProjectByOutsideId(id);
Project project = new Project();
String title = projectFromConsumer.getTitle();
project.setTitle(title);
project.setUrl("projectUrl");
return project;
}
но это работает:
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
String id = request.getParameter("id");
Project projectFromConsumer = projectDao.getProjectByOutsideId(id);
Project project = new Project();
String title = projectFromConsumer.getTitle();
project.setTitle("projectTitle");
project.setUrl("projectUrl");
return project;
}
Теперь я действительно запутался. ха-ха.