0

私のコントローラーには、1つのフォームアクションでそれらを呼び出したい別のメソッドがあります。送信ボタンの値が異なる特定のメソッドにリクエストをマップする方法がわかりません。インデックスページを実行すると、コントローラーから直接コントローラーに移動し、コントローラーからビューをレンダリングでき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>
4

2 に答える 2

2

クリックされたボタンに基づいて同じフォームに異なるエンドポイントを構成する代わりに (HTML で個別のフォームを使用するか、JS を介してフォーム アクションを変更する)、アノテーションのparams属性を使用して、フォームの送信RequestMappingを特定のフォームにさらに絞り込むことができます。ボタン (またはその他のフォーム送信フィールド) の値に基づくコントローラー メソッド。詳細については、Spring のドキュメントを参照してください。

この戦略を使用すると、リクエスト マッピングは次のようになります。

@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 {
...
于 2013-01-10T05:34:43.313 に答える
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>

これで、さまざまな検索リクエストが正しいコントローラーメソッドにマップされます。

EmployeeId入力フィールドでデフォルトで0の値を取得しますなぜそれが起こっているのかわかりません

EmployeeFormのインスタンスをモデルに追加する前に、検索ページに表示したいデフォルト値に初期化します。

于 2013-01-08T03:14:23.653 に答える