在Spring MVC中处理多个页面 [英] Handling Multiple pages in spring MVC
问题描述
我是SpringMVC的新蜜蜂,并试图在SpringMVC3中实现这个例子。
http:// www。 mkyong.com/spring-mvc/spring-mvc-handling-multipage-forms-with-abstractwizardformcontroller/
当我提交第一个Jsp时,我可以去下一个Jsp,但是在提交第二个Jsp之后用新的Jsp(空值)重定向回第一个Jsp。
项目
@Id
@Column(name =PROJECT_ID)
@GeneratedValue(strategy = GenerationType.AUTO)
private int projectId;
@Column(name =PROJECT_NAME)
private String projectName;
@Column(name =LOCATION)
私人字符串位置;
@Column(name =DESCRIPTION)
私有字符串描述;
@Column(name =DEV_TYPE)
private String developmentType;
ProjectService
public void addProject(Project project);
ProjectServiceImpl
@Autowired
private ProjectDao projectDao;
public void addProject(Project project){
projectDao.addProject(project);
ProjectDao
public void addProject(Project project);
ProjectDaoImpl
public void addProject(Project project){
getCurrentSession()。save(project);
$ / code>
ProjectController
@RequestMapping(value =/addProject.htm,method = RequestMethod.GET)
public ModelAndView reportForm(ModelMap模型,HttpServletRequest请求,
项目项目){
model.addAttribute(project,project);
ModelAndView mav = new ModelAndView(add);
return mav;
}
@RequestMapping(value =/addProject.htm,method = RequestMethod.POST)
public ModelAndView addConfirm(@ModelAttribute(project)Project project,
BindingResult结果,ModelMap模型,SessionStatus状态,HttpServletRequest请求){
HttpSession session = request.getSession();
validator.validateProject(project,result);
if(result.hasErrors()){
return new ModelAndView(addProject);
} else if(project.getDescription()== null){
//返回将设置字段2的值的表单
返回新的ModelAndView(addProjectExt);
} //等等需要设置的所有其他字段...
else {
model.addAttribute(project,project);
projectService.addProject(project);
返回redirect:listProject;
$ / code $ / pre
$ b $ JSP
addProject.jsp< form:form method =POSTmodelAttribute =projectaction =addProject.htm>
< div class =input>
< form:input path =projectName/>
< / div>
< div class =input>
< form:input path =location/>
< / div>
< / form:form>
JSP2
addProjectExt.jsp< form:form method =POSTmodelAttribute =projectaction =addProject.htm>
< div class =input>
< form:input path =description/>
< / div>
< div class =input>
< form:input path =developmentType/>
< / div>
< / form:form>
解决方案请使用@SessionAttribute(project / p>
并在JSP中使用提交按钮的目标,以便控制器知道并区分下一个按钮和提交按钮。
I am new bee to SpringMVC and trying to implement this example in SpringMVC3. http://www.mkyong.com/spring-mvc/spring-mvc-handling-multipage-forms-with-abstractwizardformcontroller/ When I submit first Jsp I am able to go to next Jsp but after submitting the second Jsp it is redirecting back to first Jsp with a new Jsp(empty values). Please suggest with comments to make it more clear for me to understand.
Project
@Id @Column(name="PROJECT_ID") @GeneratedValue(strategy=GenerationType.AUTO) private int projectId; @Column(name="PROJECT_NAME") private String projectName; @Column(name="LOCATION") private String location; @Column(name="DESCRIPTION") private String description; @Column(name="DEV_TYPE") private String developmentType;
ProjectService
public void addProject(Project project);
ProjectServiceImpl
@Autowired private ProjectDao projectDao; public void addProject(Project project) { projectDao.addProject(project); }
ProjectDao
public void addProject(Project project);
ProjectDaoImpl
public void addProject(Project project) { getCurrentSession().save(project); }
ProjectController
@RequestMapping(value = "/addProject.htm", method = RequestMethod.GET) public ModelAndView reportForm(ModelMap model, HttpServletRequest request, Project project) { model.addAttribute("project", project); ModelAndView mav = new ModelAndView("add"); return mav; } @RequestMapping(value = "/addProject.htm", method = RequestMethod.POST) public ModelAndView addConfirm(@ModelAttribute("project") Project project, BindingResult result, ModelMap model, SessionStatus status, HttpServletRequest request) { HttpSession session = request.getSession(); validator.validateProject(project, result); if (result.hasErrors()) { return new ModelAndView("addProject"); } else if (project.getDescription() == null) { //return the form that will set field two's value return new ModelAndView("addProjectExt"); } //and so on for all the other field that need to be set... else{ model.addAttribute("project", project); projectService.addProject(project); return "redirect:listProject"; } }
JSP1 addProject.jsp
<form:form method="POST" modelAttribute="project" action="addProject.htm" > <div class="input"> <form:label path="projectName" type="text" value="" >Project Name :*</form:label> <form:input path="projectName"/> </div> <div class="input"> <form:label path="location" type="text" value="" >Location :</form:label> <form:input path="location"/> </div> </form:form>
JSP2 addProjectExt.jsp
<form:form method="POST" modelAttribute="project" action="addProject.htm" > <div class="input"> <form:label path="description" type="text" value="" >Description :*</form:label> <form:input path="description"/> </div> <div class="input"> <form:label path="developmentType" type="text" value="" >Development Type :</form:label> <form:input path="developmentType"/> </div> </form:form>
解决方案Please try with @SessionAttribute("project")
and use targets for submit button in JSPs, so that controller knows and differentiate between next button and submit button.
这篇关于在Spring MVC中处理多个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!