如何存储路径变量的值并在我的控制器方法中使用它?

时间:2016-10-14 08:24:38

标签: spring jsp spring-mvc

当我启动以下网址时

http://localhost:8090/QuickStartConsulting/quickstart/email?key=6226f7cbe59e99a90b5cef6f94f966fd

调用以下控制器方法

    @RequestMapping(value = "/quickstart/email")

    public String viewQuickStartEmailForm(@ModelAttribute(value = "quickbean") 
    QuickStartBean quickbean,BindingResult result,Model model) {

        try {   

            //System.out.println(quickbean.getKey());           
email=quickbean.getEmail();
model.addAttribute("email", email);

model.addAttribute("quickstartdatabean",new QuickStartBean() );


        } catch (Exception e) {
            e.printStackTrace();
        }


        return "quickstart/emaillogin";
    }

这是我的emaillogin jsp页面

    <form:form id="requestForm" method="GET" modelAttribute="quickbean" ACTION="${pageContext.request.contextPath}/quickstart/email" >
                   <form:hidden path="key" />                                      
                    <table>
                        <tr>
                            <td><span><img src="<c:url value="/views/images/youremailid.png"/>"> </img></span></td>
                            <td>
                                <form:input type="text" style="width: 300px;" id="name" path="email" title="xyz@email.com"/>

                        </td></tr>


                        <tr>
                        <td>

                         <input type="image" id="invite_btn" src="<c:url value="/views/images/submit.png"/>"  title="create invite" width="170" height="32"/> 

                        </td>
                        </tr>


                    </table>



                </form:form>

如何存储路径变量'key'的值并在我的控制器方法中使用它? emaillogin页面是第一页,不会从任何其他jsp页面重定向。

3 个答案:

答案 0 :(得分:0)

使用@RequestParam注释

public String viewQuickStartEmailForm(@RequestParam("key") String key, ....) {...}

顺便说一下:@See @RequestParam vs @PathVariable了解请求参数和路径变量之间的详细信息和差异

答案 1 :(得分:0)

首先按如下方式定义pathVariables:

public String viewQuickStartEmailForm(@PathVariable Map pathVariables,..)

您可以使用以下代码段获取值:

    if (pathVariables != null) {
        if (pathVariables.containsKey("fieldName") &&
                !"undefined".equals(
                    (String)pathVariables.get("fieldName")) &&
                !"null".equals(
                    (String)pathVariables.get("fieldName"))) {
            params.setFieldName((String)pathVariables.get("fieldName"));
        }
    }

答案 2 :(得分:0)

@PathVariable和@RequestParam之间存在差异。例如:

@RequestParam用于访问查询参数的值。

网址:http://localhost:8081/Test/card?cardId=1012111

@RequestMapping( “/卡”)
public String getCard(@RequestParam(value =“cardId”,required = true)String cardId){

System.out.println("print the value of the cardId : "+cardId)

....... }

其中@PathVariable用于访问URI模板中的值。

网址:http://localhost:8081/Test/card/1012111

@RequestMapping( “/卡/ {CardId中}”)
public String updateCard(@PathVariable(value =“cardId”)String cardId){

System.out.println("print the value of the cardId : "+cardId)

....... }

因此,您可以更正您的代码并使用上述方法中的任何一种,而不是混合使用它们。