在Spring MVC中,将请求 参数
绑定到处理请求的方法参数很容易。我只是用@RequestParameter("name")
。但是我可以对request 属性
做同样的事情吗?当前,当我想访问request 属性时 ,我必须执行以下操作:
MyClass obj = (MyClass) request.getAttribute("attr_name");
但是我真的很想使用这样的东西:
@RequestAttribute("attr_name") MyClass obj
不幸的是,这种方式行不通。我可以以某种方式扩展Spring功能并添加自己的“绑定器”吗?
编辑 (我要实现的目标)
:我将当前登录的用户存储在request属性中。因此,每当我要访问当前登录的用户(几乎在每种方法中都需要访问)时,都必须写此额外的行user = (User) request.getAttribute("user");
。我想使其尽可能短,最好将其作为方法参数注入。或者,如果您知道另一种如何在拦截器和控制器之间传递内容的方法,我将很高兴听到。
好吧,我终于了解了模型的工作原理和@ModelAttribute
用途。这是我的解决方案。
@Controller
class MyController
{
@ModelAttribute("user")
public User getUser(HttpServletRequest request)
{
return (User) request.getAttribute("user");
}
@RequestMapping(value = "someurl", method = RequestMethod.GET)
public String HandleSomeUrl(@ModelAttribute("user") User user)
{
// ... do some stuff
}
}
getUser()
标有@ModelAttribute
注解的方法将自动填充User user
标有的所有参数@ModelAttribute
。因此,当调用HandleSomeUrl方法时,调用看起来像MyController.HandleSomeUrl(MyController.getUser(request))
。至少这是我的想象。很棒的事情是,用户也可以从JSP视图进行访问,而无需任何进一步的努力。
这完全可以解决我的问题,但是我还有其他问题。我可以在这些地方放置这些@ModelAttribute
方法,使它们对我所有的控制器都通用吗?我可以以某种方式从preHandle()
拦截器的方法内部添加模型属性吗?
我有一个这样定义的UserControl
想象一下我有一个POJO,比如: 如果我需要使用bind()方法将name成员绑定到JavaFX标签,我不能应用,因为我需要一个可观察值。 我知道我可以使用StringProperty代替String,但是我需要基本类型,因为我使用Hibernate,我不知道Hibernate是否可以支持JavaFX的属性来映射DB中的数据。 我必须将哪些备选方案从我的 pojo 绑定到 JavaFX 控件?
我有过 我通过这种方式传递profileJson: 但是我的配置文件Json对象具有所有空字段。我应该怎么做才能让Spring解析我的json?
我想我可能发现了springs web binder的一个关键bug,或者更有可能,我做了一些可怕的错误。基本上,来自一个servlet请求的数据会以某种方式复制到另一个请求中。
问题内容: 我正在使用simple_form gem并生成表单,我正在指定remote:true选项,如下所示: 因此,表单的输出html是以下片段: 正如我检查的那样,当使用 remote:true 选项时,使用标准的form_for帮助器将 data-remote =’true’添加 到表单中。从生成的html中可以看到,当我使用simple_form gem时,也有这样的属性。 __ 因此,
问题内容: 想象一下,我有一个像这样的POJO: 如果我需要使用bind()方法将名称成员绑定到JavaFX标签,则无法应用,因为我需要一个可观察的值。 我知道我可以使用StringProperty代替String,但是我需要原始类型,因为我使用Hibernate,而且我不知道Hibernate是否可以支持JavaFX的属性来映射数据库中的数据。 我必须从pojo绑定到JavaFX控件哪些替代方法