【问题标题】:How to redirect from one jsp to another jsp in Spring MVC when it satisfies the condition of another variable当Spring MVC满足另一个变量的条件时如何从一个jsp重定向到另一个jsp
【发布时间】:2017-11-22 12:33:08
【问题描述】:

在 Spring MVC 上工作,我想在条件满足时将页面从一个 JSP 重定向到另一个。

  1. 如果列经验大于 3 则必须重定向到另一个 JSP 页面(当前 JSP 页面:addEmployee to insureEmployee JSP 页面)
  2. 当值小于 3 时,它必须正常将数据存储到数据库中。
  3. 我有 2 个表...所以当经验超过 3 年时,它必须重定向到新的 JSP,并且一旦我提交数据必须存储在数据库(辅助表)中,否则当经验较少时大于 3 则必须保存到主表数据库中
  4. 我只想在体验栏中输入大于 3 的值时重定向到另一个 JSP
  5. 我已经发布了我的 Controller 类和 JSP 代码

员工类的控制器:

   package com.dineshonjava.controller;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javax.validation.Valid;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    import com.dineshonjava.bean.EmployeeBean;
    import com.dineshonjava.model.Employee;
    import com.dineshonjava.service.EmployeeService;
    @Controller
    public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public ModelAndView saveEmployee(@Valid  @ModelAttribute("command") EmployeeBean employeeBean, 
                BindingResult result) {
    if(result.hasErrors()){

                return new ModelAndView("addEmployee");
            }

            Employee employee = prepareModel(employeeBean);
            employeeService.addEmployee(employee);
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("displayEmployee",model);
            }
        @RequestMapping(value = "/saved", method = RequestMethod.POST)
        public ModelAndView savedEmployee(@Valid  @ModelAttribute("command") EmployeeBean employeeBean, 
                BindingResult result) {
    if(result.hasErrors()){

                return new ModelAndView("addEmployee");
            }
            Employee employee = prepareModel(employeeBean);
            employeeService.addEmployee(employee);
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("displayEmployee",model);
        }
        @RequestMapping(value="/employees", method = RequestMethod.GET)
        public ModelAndView listEmployees() {
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("employeesList", model);
        }

        @RequestMapping(value = "/add", method = RequestMethod.GET)
        public ModelAndView addEmployee(@Valid @ModelAttribute("command")  EmployeeBean employeeBean,
                BindingResult result) {
    if(result.hasErrors()){

                return new ModelAndView("addEmployee");
            }
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("addEmployee", model);
        }

        @RequestMapping(value = "/index", method = RequestMethod.GET)
        public ModelAndView welcome() {
            return new ModelAndView("index");
        }

        @RequestMapping(value = "/sub", method = RequestMethod.GET)
        public ModelAndView Edit() {
            return new ModelAndView("displayEmployee");
        }

        @RequestMapping(value = "/delete", method = RequestMethod.GET)
        public ModelAndView editEmployee(@ModelAttribute("command")  EmployeeBean employeeBean,
                BindingResult result) {
            employeeService.deleteEmployee(prepareModel(employeeBean));
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employee", null);
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("displayEmployee", model);
        }

        @RequestMapping(value = "/edit", method = RequestMethod.GET)
        public ModelAndView deleteEmployee(@Valid @ModelAttribute("command")  EmployeeBean employeeBean,
                BindingResult result) {
          if(result.hasErrors()){
                 Map<String, Object> model = new HashMap<String, Object>();
                 model.put("employee", prepareEmployeeBean(employeeService.getEmployee(employeeBean.getId())));
                  model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
                return new ModelAndView("editEmployee", model);
            }
            Map<String, Object> model = new HashMap<String, Object>();
            model.put("employee", prepareEmployeeBean(employeeService.getEmployee(employeeBean.getId())));
            model.put("employees",  prepareListofBean(employeeService.listEmployeess()));
            return new ModelAndView("displayEmployee", model);
        }

        private Employee prepareModel(EmployeeBean employeeBean){
            Employee employee = new Employee();
            employee.setAddress(employeeBean.getAddress());
            employee.setAge(employeeBean.getAge());
            employee.setName(employeeBean.getName());
            employee.setSalary(employeeBean.getSalary());
            employee.setId(employeeBean.getId());
            employee.setBae(employeeBean.getBae());
            employee.setExperience(employeeBean.getExperience());
            employee.setEmail(employeeBean.getEmail());
            employee.setPassword(employeeBean.getPassword());

            employeeBean.setId(null);
            return employee;
        }
        private List<EmployeeBean> prepareListofBean(List<Employee> employees){
            List<EmployeeBean> beans = null;
            if(employees != null && !employees.isEmpty()){
                beans = new ArrayList<EmployeeBean>();
                EmployeeBean bean = null;
                for(Employee employee : employees){
                    bean = new EmployeeBean();
                    bean.setName(employee.getName());
                    bean.setId(employee.getId());
                    bean.setAddress(employee.getAddress());
                    bean.setSalary(employee.getSalary());
                    bean.setAge(employee.getAge());
                    bean.setBae(employee.getBae());
                    bean.setExperience(employee.getExperience());
                    bean.setEmail(employee.getEmail());
                    bean.setPassword(employee.getPassword());

                    beans.add(bean);
                }
            }
            return beans;
        }
        private EmployeeBean prepareEmployeeBean(Employee employee){
            EmployeeBean bean = new EmployeeBean();
            bean.setAddress(employee.getAddress());
            bean.setAge(employee.getAge());
            bean.setName(employee.getName());
            bean.setSalary(employee.getSalary());
            bean.setId(employee.getId());
            bean.setBae(employee.getBae());
            bean.setExperience(employee.getExperience());
            bean.setEmail(employee.getEmail());
            bean.setPassword(employee.getPassword());

            return bean;
        }
    }





 Controller of Worker Class:
package com.dineshonjava.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;    import com.dineshonjava.bean.WorkerBean;
import com.dineshonjava.model.Worker;
import com.dineshonjava.service.WorkerService;
@Controller
public class  WorkerController {
@Autowired
private WorkerService workService;
@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView saveWorker(@Valid  @ModelAttribute("command") WorkerBean workBean, 
          BindingResult result) {
if(result.hasErrors()){

          return new ModelAndView("");
      }

      Worker work = prepareModel(workBean);
      workService.addWorker(work);
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("",model);
      }

@RequestMapping(value = "/added", method = RequestMethod.GET)
public ModelAndView added() {
  return new ModelAndView("insureEmployee");
}
@RequestMapping(value = "/", method = RequestMethod.POST)
  public ModelAndView savedWorker(@Valid  @ModelAttribute("command") WorkerBean workBean, 
          BindingResult result) {
if(result.hasErrors()){

          return new ModelAndView("");
      }
        Worker work = prepareModel(workBean);
        workService.addWorker(work);
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("",model);
  }
  @RequestMapping(value="/", method = RequestMethod.GET)
  public ModelAndView listWorker() {
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("", model);
  }

  @RequestMapping(value = "/insure", method = RequestMethod.GET)
  public ModelAndView addWorker(@Valid @ModelAttribute("command")  WorkerBean workBean,
          BindingResult result) {
if(result.hasErrors()){

          return new ModelAndView("insureEmployee");
      }
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("insureEmployee", model);
  }

  @RequestMapping(value = "/", method = RequestMethod.GET)
  public ModelAndView editEmployee(@ModelAttribute("command")  WorkerBean workBean,
          BindingResult result) {
      workService.deleteWorker(prepareModel(workBean));
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("work", null);
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("", model);
  }

  @RequestMapping(value = "/", method = RequestMethod.GET)
  public ModelAndView deleteWork(@Valid @ModelAttribute("command")  Worker workBean,
          BindingResult result) {
      if(result.hasErrors()){
           Map<String, Object> model = new HashMap<String, Object>();
           model.put("work", prepareWorkerBean(workService.getWorker(workBean.getId())));
            model.put("works",  prepareListofBean(workService.listWorkers()));
          return new ModelAndView("", model);
      }
      Map<String, Object> model = new HashMap<String, Object>();
      model.put("work", prepareWorkerBean(workService.getWorker(workBean.getId())));
      model.put("works",  prepareListofBean(workService.listWorkers()));
      return new ModelAndView("", model);
  }

  private Worker prepareModel(WorkerBean workBean){
      Worker work = new Worker();
      work.setPhone(workBean.getPhone());
      work.setAccno(workBean.getAccno());
      work.setId(workBean.getId());
      workBean.setId(null);
      return work;
  }
  private List<WorkerBean> prepareListofBean(List<Worker> work){
      List<WorkerBean> beans = null;
      if(work != null && !work.isEmpty()){
          beans = new ArrayList<WorkerBean>();
          WorkerBean bean = null;
          for(Worker worker : work){
              bean = new WorkerBean();

              bean.setId(worker.getId());
              bean.setPhone(worker.getPhone());
                bean.setAccno(worker.getAccno());

              beans.add(bean);
          }
      }
      return beans;
  }

  private WorkerBean prepareWorkerBean(Worker work){
      WorkerBean bean = new WorkerBean();

      bean.setId(work.getId());
      bean.setPhone(work.getPhone());
      bean.setAccno(work.getAccno());

      return bean;
  }
}

需要重定向的addEmployee JSP 文件:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Spring MVC Form Handling</title>
</head>
<style>
.error {
    color: red;
    font-weight: bold;
}
</style>
<body>
    <h2>Add Employee Data</h2>
    <form:form method="POST" action="/sdnext/save.html">
        <table>
            <tr>
                <td align="left" width="20%">EmployeeID:</td>
                <td align="left" width="40%"><form:input path="id"
                        readonly="true" size="30" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Name:</td>
                <td align="left" width="40%"><form:input path="name" size="30" /></td>
                <td><form:errors path="name" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Age:</td>
                <td align="left" width="40%"><form:input path="age" size="30" /></td>
                <td align="left"><form:errors path="age" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">salary:</td>
                <td align="left" width="40%"><form:input path="salary"
                        size="30" /></td>
                <td align="left"><form:errors path="salary" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Address:</td>
                <td align="left" width="40%"><form:input path="address"
                        size="30" /></td>
                <td><form:errors path="address" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Bae:</td>
                <td align="left" width="40%"><form:input path="bae" size="30" /></td>
                <td><form:errors path="bae" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Experience:</td>
                <td align="left" width="40%"><form:input path="experience" id="experience"
                        size="30" onblur="checkExperience()"/></td>
                <td><form:errors path="experience" cssClass="error" /></td>
            </tr>
            <tr>
                <td align="left" width="20%">Email:</td>
                <td align="left" width="40%"><form:input path="email" size="30" /></td>
                <td><form:errors path="email" cssClass="error" /></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><form:password path="password" size="30" /></td>
                <td><form:errors path="password" cssClass="error" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="Submit" /></td>
            </tr>
            </table>


    </form:form>
</body>
</html>

insureEmployee JSP 文件(重定向到此页面):

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>


<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body> 
<form:form method="POST" action="/sdnext/insure.html" >
                 <table> <tr>
             <tr>
                <td align="left" width="20%">Phone:</td>
                <td align="left" width="40%"><form:input path="phone" size="30" /></td>
                <td><form:errors path="phone" cssClass="error" /></td>
            </tr>
            <tr>
                <td>Account Number:</td>
                <td><form:password path="accno" size="30" /></td>
                <td><form:errors path="accno" cssClass="error" /></td>
            </tr>
            <tr>
            <td>   <input type="submit" value="Submit"/></td>
            </tr>
            </table>

</form:form>
</body>
</html>


InsureEmployee where redirected page comes here:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>


<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body> 
<form:form method="POST" action="/sdnext/insure.html" >
                 <table> <tr>
             <tr>
                <td align="left" width="20%">Phone:</td>
                <td align="left" width="40%"><form:input path="phone" size="30" /></td>
                <td><form:errors path="phone" cssClass="error" /></td>
            </tr>
            <tr>
                <td>Account Number:</td>
                <td><form:password path="accno" size="30" /></td>
                <td><form:errors path="accno" cssClass="error" /></td>
            </tr>
            <tr>
            <td>   <input type="submit" value="Submit"/></td>
            </tr>
            </table>

</form:form>
</body>
</html>

【问题讨论】:

  • 代码太多了。请只发布 relevant 代码和相关 HTML(Rendered HTML not 生成它的代码)最好在工作 sn-p 中以演示您对之前提到的条件/逻辑的当前评估存在问题,因此我们可以看到可能是什么问题。请看How to create a Minimal, Complete, and Verifiable example
  • 可以在return语句前检查条件,但是需要有两个重定向,一个大于3,一个小于3。
  • 我认为重要的是你也明白你只是选择不同的视图来返回。重定向意味着别的东西。

标签: javascript java jsp spring-mvc


【解决方案1】:

你能做的是

if(variable > 3){
   return new ModelAndView("return to greater than 3 page");
}else{
 return new ModelAndView("return to same page");
}

由于方法返回类型,您将需要重定向到同一页面或任何其他页面。

【讨论】:

  • 我可以在我的 JSP 页面中使用 Javascript 进行编辑吗?我可以在控制器中使用它吗? :-(
  • 意味着我没有得到那个。编辑 JSP 做什么?
  • 如果有两个 JSP 文件...说 hi.jsp 和 hello.jsp ..嗨,我有 3 列...(id,name,experience)。如果我提供更多经验大于 3,则它必须重定向到 hello.jsp 页面。或者当我给出小于 3 的值时,它必须将数据正常存储在数据库中。我对你说清楚了吗,兄弟,如果你不明白的话,对不起
  • 您可以使用 jquery 检查您可以使用 $("#idofield").val() >= 3 获取字段的值,然后设置 window.location =“hello.jsp”。您还可以检查用于体验的文本框的模糊事件。
猜你喜欢
  • 2015-05-04
  • 2013-09-16
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2018-03-15
  • 1970-01-01
相关资源
最近更新 更多