Liferay + Spring:带有url参数的render方法中的@ModelAttribute

时间:2013-12-06 15:03:23

标签: java spring liferay

我想用过滤器和搜索结果制作portlet。过滤器必须在get方法中发送。 我使用spring注释@ModelAttribute进行过滤。但是filter中的所有属性都为null,因为liferay使用了诸如_ [PORTLET_NAME] _WAR_ [WAR_NAME]之类的url参数的前缀。 我通过post方法和workek使用了actionRequest和sended过滤器,但是我需要url中的参数。

控制器中的方法:

@RequestMapping
public String view(@ModelAttribute("filter") ProcessSearchFilter filter, RenderRequest request, Model model)

当参数名称是_processSearch_WAR_portlets_text = test时,在filter属性中文本是test,但我想在url中使用text参数。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Liferay 6.2 ,有必要为视图页面上的字段声明名称空间前缀。如果您没有收到提交表单中的任何值,请尝试设置这样的前缀

<input type="text" name="<portlet:namespace />inputTextName" />

或更改portlet的设置,因此不需要它们。在liferay-portlet.xml中为所选portlet设置 requires-namespaced-parameters 标记为 false

答案 1 :(得分:0)

如果你在url中有“text”参数,那么你可以使用,而不是@ModelAttribute

@RequestParam("text") String text

或者,如果param变量名称与参数名称相同

@RequestParam String text

另请注意,@ RequestParam,如上所示,默认情况下需要参数。如果不想这样,请使用

@RequestParam(value = "text", required = false) String text

你的渲染方法应该(也)有@RenderMapping注释。