在Spring MVC中处理多个页面 [英] Handling Multiple pages in spring MVC

查看:123
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆