java - 在 Spring MVC 中处理多个页面

标签 java html hibernate jsp 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")
  private String location;

  @Column(name="DESCRIPTION")
  private String description;

  @Column(name="DEV_TYPE")
  private String developmentType;

项目服务

    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);     
    }

项目 Controller

    @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>

最佳答案

请尝试使用 @SessionAttribute("project")

并在 JSP 中使用提交按钮的目标,以便 Controller 知道并区分下一个按钮和提交按钮。

关于java - 在 Spring MVC 中处理多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27596614/

相关文章:

JQuery 用响应式 Div 包装表格单元格

html - 元素上的 CSS 动态宽度

java - 基于日期的ehcache

hibernate - 如何在使用 Hibernate 保存时使用 DB 端默认值?

java - JAXB 为 @XmlTransient 字段抛出零参数构造函数错误

java - Java/Selenium/Maven 中的相对路径

java - 从一组 exe 和 bat 文件创建可执行文件

java - 禁用 Sonar 中的最大继承深度

javascript - 表单提交后显示隐藏的div

java - 无法在此 ManagedType 上找到具有给定名称 [XXX] 的属性 [未知]