我可以“传递”带有JSF param标签的对象吗?
问题内容:
我正在寻找的是在f:param标记中带有一个我自己选择的value属性中的对象。然后,在该操作的后备bean方法中,我希望能够从请求中拉出此Object。(很抱歉,如果我的术语不太好,我是JSF的新手)。
现在,我可以在请求参数中传递字符串了。我还意识到,在http get或post中,参数始终是String,所以我没有 真正
传递java对象。我还意识到,实现此目的的一种方法是传递某种“ id”,然后支持bean可以使用该“ id”来标识所讨论的对象。
但是,我想知道的是JSF是否允许我透明地执行此操作。我可以指定任何对象作为参数的值,然后仅以操作方法从RequestMap中获取它吗?
问题答案:
您无法使用来做到这一点<f:param>
。需要将其附加到请求的URL,因此实际上必须是String
。只需使用<f:setPropertyActionListener>
。
例如
<h:commandLink value="Submit" action="#{bean.submit}">
<f:setPropertyActionListener target="#{bean.otherBean}" value="#{otherBean}" />
</h:commandLink>
这样,#{otherBean}
可以作为this.otherBean
内部submit()
方法使用。这样,您也不必惹请求参数地图(对于这情况下<f:param>
,我宁愿使用了
托管属性注射 用#{param.name}
代替)。
替代方案是<h:inputHidden>
与Converter
或结合使用“战斧”
<t:saveState>
。另请参阅此博客文章以获取更多背景信息和示例。