Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在重定向视图中传递绑定结果对象_Spring_Jsp_Jstl - Fatal编程技术网

Spring 如何在重定向视图中传递绑定结果对象

Spring 如何在重定向视图中传递绑定结果对象,spring,jsp,jstl,Spring,Jsp,Jstl,我是spring新手,如果表单有错误,我会尝试重定向到同一页面。我成功地重定向了它,但问题是表单有一个动态下拉列表,当我返回一个模型对象时,不会呈现值。或者,当我执行ModelAndView(新建重定向视图(“查找”)时,我可以呈现下拉列表值,但无法显示错误消息 代码:jsp:lookup.jsp <form:form name="lookupForm" method="POST" action="search.html" enctype="multipart/form

我是spring新手,如果表单有错误,我会尝试重定向到同一页面。我成功地重定向了它,但问题是表单有一个动态下拉列表,当我返回一个模型对象时,不会呈现值。或者,当我执行ModelAndView(新建重定向视图(“查找”)时,我可以呈现下拉列表值,但无法显示错误消息

代码:jsp:lookup.jsp

<form:form   name="lookupForm" method="POST"  action="search.html"        enctype="multipart/form-data"  >
<div style= "color:red">
<form:errors path="empId" /></br>
<form:errors path="companyName" />
</div>
<form:label path="companyName">Company</form:label>
<select name= "companyList" path="companyName">
<option value="Select">Select</option>
<c:forEach  var="element" items="${listCompany}"> 
<option value="${element.companyName}">${element.companyName}</option>
</c:forEach>
</select>
<form:label path="empId">Employee ID</form:label>
<form:textarea name="empId" path="empId" rows="5" cols="30"/>
<input type="submit" name="search" value="Search"/>


公司 选择 ${element.companyName} 员工ID
控制器:

@RequestMapping(value = "/lookup", method = RequestMethod.GET)
public ModelAndView lookupFormView(ModelAndView model,BindingResult result) {
List<Employee> listCompany = employeeDAO.getCompany();
Employee newContact = new Employee();           
model.addObject("listCompany", listCompany);
model.addObject("command", newContact);
model.setViewName("lookup");
return model;  
}


@RequestMapping(value = "/search", params = "search", method = RequestMethod.POST)
public ModelAndView lookupEmployee(HttpServletRequest request,HttpServletResponse  response, @ModelAttribute("command") Employee emp,BindingResult result) throws Exception{
empValidator.validate(emp, result);
String lookupEmpId = null;
if (result.hasErrors()) {
return  new ModelAndView(new RedirectView("lookup"));
//return  new ModelAndView("lookup");
}
else{
        -----
@RequestMapping(value=“/lookup”,method=RequestMethod.GET)
公共模型和视图查找表单视图(模型和视图模型,BindingResult){
List listCompany=employeeDAO.getCompany();
Employee newContact=新员工();
model.addObject(“listCompany”,listCompany);
model.addObject(“命令”,newContact);
model.setViewName(“查找”);
收益模型;
}
@RequestMapping(value=“/search”,params=“search”,method=RequestMethod.POST)
公共ModelAndView lookupEmployee(HttpServletRequest请求、HttpServletResponse响应、@ModelAttribute(“命令”)Employee emp、BindingResult结果)引发异常{
emp验证程序。验证(emp,结果);
字符串lookupEmpId=null;
if(result.hasErrors()){
返回新的ModelAndView(新的重定向视图(“查找”);
//返回新的ModelAndView(“查找”);
}
否则{
-----
如果我使用这个returnnewmodelandview(newredirectview(“lookup”);它将重定向到lookup.jsp,呈现下拉值,但不会显示错误消息。 如果我使用这个返回newmodelandview(“lookup”);它重定向到lookup.jsp,则会显示错误,但不会呈现动态下拉列表值


请帮助我找出代码的哪一部分是错误的,或者它们是显示错误消息和呈现动态下拉值的一种方式

只需返回视图名称并在模型本身中设置错误消息。只需在JSP中检查错误消息(如果找到),然后显示它

示例代码:

@RequestMapping(value = "/search", params = "search", method = RequestMethod.POST)
public String lookupEmployee(HttpServletRequest request,HttpServletResponse response, 
                    @ModelAttribute("command") Employee emp,BindingResult result) throws Exception{
    empValidator.validate(emp, result);
    String lookupEmpId = null;
    if (result.hasErrors()) {
       emp.setErrorMessage("Your error message.");
       return  "lookup";
    }else{
       ...
       return "successPage";
    }
 }