[英]Can I “pass” an object with a JSF param tag?
我正在寻找的是在value属性中有一个f:param标签,其中包含我自己选择的Object。 然后,在操作的支持bean方法中,我希望能够从请求中提取此Object。 (对不起,如果我的术语不太好,我是JSF的新手)。
现在,我可以在请求参数中传递Strings就好了。 我也意识到参数总是在http get或post中成为一个String,所以我并没有真正传递一个java对象。 我也意识到这样做的一种方法是传递某种“id”,然后支持bean可以使用它来识别有问题的对象。
然而,我想知道的是,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
结合使用或使用Tomahawk的<t:saveState>
。 另请参阅此博客文章以获取更多背景信息和示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.