2013-01-07 46 views
0

在我的控制器中有不同的方法,我想用一个表单动作调用它们。我不知道如何映射请求到不同的提交按钮的方法,因为我运行我的索引页,它直接从他们的控制器,它可以呈现从我的控制器的view()视图和Search .jsp是我打开在默认情况下0值在我EmployeeId输入字段我不知道为什么它的发生plz帮助我出去春天调用一个弹簧控制器的不同方法

这里即时通讯新是我的控制器

package com.nousinfo.tutorial.controllers; 

import java.util.List; 

import org.springframework.stereotype.Controller; 
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.nousinfo.tutorial.model.EmployeeForm; 
import com.nousinfo.tutorial.service.impl.EmployeeServiceImpl; 
import com.nousinfo.tutorial.service.model.EmployeeBO; 

@Controller 
@RequestMapping("/search") 
public class SearchEmployeeController { 

    private EmployeeServiceImpl employeeServiceImpl; 

    public void setEmployeeServiceImpl(EmployeeServiceImpl employeeServiceImpl) { 
     this.employeeServiceImpl = employeeServiceImpl; 
    } 



    @RequestMapping(value = "/searchspring", method = RequestMethod.GET) 
    public ModelAndView view(
      @ModelAttribute("employeeForm") EmployeeForm employeeForm) 
      throws Exception { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("employeeForm", employeeForm); 
     model.setViewName("Search"); 

     return model; 
    } 

    @RequestMapping(value = "/employeeNo", method = RequestMethod.POST) 
    public ModelAndView searchByEmpNo(
      @ModelAttribute("employeeForm") EmployeeForm employeeForm) 
      throws Exception { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("employeeForm", employeeForm); 
     Long i = employeeForm.getEmployeeNumber(); 

     EmployeeBO employeeBO = employeeServiceImpl.getEmployee(i); 
     System.out.println(employeeBO); 
     model.addObject("employeeBO", employeeBO); 

     model.setViewName("EmployeeDetail"); 
     return model; 
    } 

    @RequestMapping(value = "/empByName", method = RequestMethod.POST) 
    public ModelAndView searchByEmployeeName(
      @ModelAttribute("employeeForm") EmployeeForm employeeForm) { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("employeeForm", employeeForm); 
     List<EmployeeBO> employeeBOs = employeeServiceImpl 
       .findEmployees(employeeForm.getFirstName()); 
     model.addObject("listEmployeeBO", employeeBOs); 
     model.setViewName("EmployeeList"); 
     return model; 

    } 

    @RequestMapping(value = "/empByDeptId", method = RequestMethod.POST) 
    public ModelAndView searchByDeptId(
      @ModelAttribute("employeeForm") EmployeeForm employeeForm) { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("employeeForm", employeeForm); 
     List<EmployeeBO> employeeBOs = employeeServiceImpl 
       .getAllEmployeeByDeptid(employeeForm.getDepartmentId()); 
     model.addObject("listEmployeeBO", employeeBOs); 
     model.setViewName("EmployeeList"); 

     return model; 

    } 

} 

,这是我的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 

<% 
response.sendRedirect("/EmployeeWebSpring/search/searchspring"); 
%> 

这是我search.jsp的

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

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<fmt:setBundle basename="ApplicationResources" /> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Employee Search Page</title> 

</head> 
<body> 
    <form:form action="/EmployeeWebSpring/search/empByName" commandName="employeeForm" method="post"> 
     <table border="0"> 



      <tr> 
       <td>Employee_ID</td> 
       <td><form:input path="employeeNumber" /></td> 
       <td><input type="submit" name="method" value="FindById" /></td> 
      </tr> 
      <tr> 
       <td>Employee_Name</td> 
       <td><form:input path="firstName" /></td> 
       <td><input type="submit" name="method" value="FindByName" /></td> 
      </tr> 


      <tr> 
       <td>Employee_Name</td> 
       <td><form:input path="departmentId" /></td> 
       <td><input type="submit" name="method" value="FindByDeptNO" /></td> 
      </tr> 
      <tr> 
       <td colspan="2" align="center"><font size=3>For 
         Searching the employees by<b>Employee Name</b><br />you can use % 
         match all the records with the given pattern 
       </font><br /> <font size="2"> <i>e.g <b> for search by</b>EmployeeName<br /> 
          matches alL the employees whose name starts with character <b>S</b></i></font></td> 
      </tr> 
     </table> 
    </form:form> 
</body> 
</html> 

回答

0

我不知道如何映射请求映射到具体的方法有不同的值提交按钮

有一个单独的形式,每个搜索。每个表单映射到不同的控制器方法。像这样:

<form:form action="empById" method="post" commandName="searchBean"> 
    Employee_ID 
    <form:input path="employeeNumber" /> 
    <input type="submit" name="method" value="FindById" /> 
</form:form> 
<form:form action="empByName" method="post" commandName="searchBean"> 
    Employee_Name 
    <form:input path="firstName" /> 
    <input type="submit" name="method" value="FindByName" /> 
</form:form> 
<form:form action="empByDeptNo" method="post" commandName="searchBean"> 
    Employee_Name 
    <form:input path="departmentId" /> 
    <input type="submit" name="method" value="FindByDeptNO" /> 
</form:form> 

现在不同的搜索请求会映射到正确的控制器方法。

我让我的雇员输入字段我不知道的默认值为0,为什么它的发生

在添加EmployeeForm的一个实例模型,它初始化为你将什么都默认值喜欢在搜索页面中看到。

+0

,而不是提供多形式的行动,我有改变通过JavaScript的动作值 – henrycharles

2

作为基于单击按钮(使用HTML中的单独表单或通过JS更改表单动作)为同一表单配置不同端点的替代方法,您可以使用RequestMapping注释的params属性进一步缩小根据按钮的值(或任何其他表单提交的字段)将表单提交给特定的控制器方法。有关详细信息,请参阅Spring documentation

采用这种策略,您的请求映射会是这个样子:

@RequestMapping(value = "/employeeSearch", method = RequestMethod.POST, params="method=FindByName") 
public ModelAndView searchByEmployeeName(
     @ModelAttribute("employeeForm") EmployeeForm employeeForm) { 
... 

@RequestMapping(value = "/employeeSearch", method = RequestMethod.POST, params="method=FindByDeptNO") 
public ModelAndView searchByDeptId(
     @ModelAttribute("employeeForm") EmployeeForm employeeForm) { 
... 

@RequestMapping(value = "/employeeSearch", method = RequestMethod.POST, params="method=FindById") 
public ModelAndView searchByEmpNo(
     @ModelAttribute("employeeForm") EmployeeForm employeeForm) 
     throws Exception { 
... 
相关问题