【问题标题】:How can I map a form to two different methods in controller using RequestMapping?如何使用 RequestMapping 将表单映射到控制器中的两种不同方法?
【发布时间】:2014-09-30 04:26:34
【问题描述】:

所以我的 Spring MVC 项目主页在一个表单中有两个输入字段。

用户可以输入卷号或名称。

jsp

<form action="search" method="GET" >
        <div style="text-align: center;">
            <input  type="text" id="regNo" name="regNo" size="30" maxLength="50" "></input> or 
            <input  id="studentName" type="text" size="30" maxLength="50" "></input>
</form>

在我的控制器中,我有两个方法映射到两个输入字段。

@RequestMapping(value ="/search", method = RequestMethod.GET)
    public String getStudent(String regNo, ModelMap model){

        return "A";
    }

    @RequestMapping(value="/search", method = RequestMethod.GET)
    public String searchStudentByName(String studentName, ModelMap model){

        return "B";
    }

由于两个输入字段都是字符串,我不知道如何将它们映射到控制器中的两个不同方法?

【问题讨论】:

    标签: java spring jsp spring-mvc web


    【解决方案1】:

    你想要这样的东西吗:

    @RequestMapping(method= RequestMethod.GET,value = "/search/r/regNo={regNo}")
    public String getStudent(@PathVariable String regNo){
    
    }
    

    学生姓名:

    @RequestMapping(method= RequestMethod.GET,value = "/search/s/studentName={studentName}")
    public String getStudent(@PathVariable String studentName){
    
    }
    

    那么您需要在不同的form tag 中添加两个请求,并在操作标签中提供:

    如果regNo发送:

    /search/r/
    

    对于studentName:

    /search/s/
    

    jsp:

    <form action="search/r" method="GET" >
            <div style="text-align: center;">
                <input  type="text" id="regNo" name="regNo" size="30" maxLength="50" "></input> 
                <input type="submit" name="approve" value="RegNo" />
    </form>    
    <form action="search/s" method="GET" >
            <div style="text-align: center;">
                <input  id="studentName" type="text" size="30" maxLength="50" "></input>
                <input type="submit" name="approve" value="StudentName" />
    </form>
    

    或第二种方法:

    <form action="search" method="GET" >
                    <input  type="text" id="regNo" name="regNo" size="30" maxLength="50" "></input> 
                    <input  id="studentName" type="text" size="30" maxLength="50" "></input>
    
                    <input type="submit" name="regno" value="regno" />
                    <input type="submit" name="studentName" value="studentName" />
    </form>
    

    控制器:

    @RequestMapping(value = "/search", method = RequestMethod.GET, params = { "regno" })
    public String getRegno(@RequestParam String regno) {
    
    }
    
    @RequestMapping(value = "/search", method = RequestMethod.GET, params = { "studentName" })
    public String getStudent(@RequestParam String studentName) {
    
    }
    

    发给我。

    【讨论】:

    • 我想在一个请求中发送 regNo,在另一个请求中发送 studentName。我不会同时做这两件事。
    • OK 等一下,我只是更新答案。
    • 能否请您也写下jsp更改?谢谢。
    • 你想要多个控制器吗?
    • 在 jsp 中,我将引入 javascript,如果用户开始输入 regNo,studentName 字段将被禁用,反之亦然。使用两个不同的表单标签会打开任何安全漏洞吗?
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2012-11-04
    • 2012-10-25
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多