加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 了解在Spring MVC中使用@ModelAttribute和@RequestAttr

发布时间:2020-12-15 01:28:43 所属栏目:大数据 来源:网络整理
导读:我是Spring MVC的新手.目前我正在研究Spring MVC Showcase,它演示了Spring MVC Web框架的功能. 我有一些问题需要了解如何在此示例中处理自定义可解析的Web参数. 在实践中,我有以下情况.在我的home.jsp视图中,我有以下链接: 此链接生成对URL的HTTP请求:“/

我是Spring MVC的新手.目前我正在研究Spring MVC Showcase,它演示了Spring MVC Web框架的功能.

我有一些问题需要了解如何在此示例中处理自定义可解析的Web参数.

在实践中,我有以下情况.在我的home.jsp视图中,我有以下链接:

此链接生成对URL的HTTP请求:“/ data / custom”

包含处理此请求的方法的控制器类具有以下代码:

@Controller
public class CustomArgumentController {

    @ModelAttribute
    void beforeInvokingHandlerMethod(HttpServletRequest request) {
        request.setAttribute("foo","bar");
    }

    @RequestMapping(value="/data/custom",method=RequestMethod.GET)
    public @ResponseBody String custom(@RequestAttribute("foo") String foo) {
        return "Got 'foo' request attribute value '" + foo + "'";
    }

}

处理此HTTP请求的方法是custom().因此,单击上一个链接时,HTTP请求将由自定义方法处理.

我有一些问题需要了解@RequestAttribute注释到底做了什么.我认为,在这种情况下,它将名为foo的请求属性绑定到一个新的String foo变量.但是这个属性取自何处?这个变量是Spring采用的吗?

好的,我的想法是这个请求属性取自HttpServletRequest对象.我是这么认为的,因为在这个类中,我还有一个具有说话名称的beforeInvokingHandlerMethod()方法,所以看起来这个方法在HttpServletRequest对象中设置了一个名称= foo和value = bar的属性,然后所以custom()方法可以使用这个值.

实际上我的输出是:

Got ‘foo’ request attribute value ‘bar’

为什么在custom()方法之前调用beforeInvokingHandlerMethod()?

为什么beforeInvokingHandlerMethod()由@ModelAttribute注释注释?在这种情况下它意味着什么?

最佳答案
RequestAttribute只是您在表单提交中传递的参数.让我们了解一个示例示例

假设我有以下表格

现在,如果我有下面的控制器,它与请求URL映射,并与表单提交映射,如下所示.

@Controller
public class CustomArgumentController {

@ModelAttribute
void beforeInvokingHandlerMethod(HttpServletRequest request) {
    request.setAttribute("foo","bar");
}


@RequestMapping(value="/data/custom",method=RequestMethod.GET)
public @ResponseBody String custom(@RequestAttribute("param1") String param1 ) {
    // Here,I will have value of param1 as test in String object which will be mapped my Spring itself
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读