我可以“传递”带有 JSF 参数标记的对象吗?

2022-09-03 06:35:54

我正在寻找的是一个f:param标签,其中包含我自己选择的Object。然后,在操作的支持Bean方法中,我希望能够从请求中提取此对象。(抱歉,如果我的术语不太好,我是JSF的新手)。

现在,我可以在请求参数中传递字符串就好了。我还意识到,在http get或post中,参数总是会是一个字符串,所以我并没有真正传递java对象。我还意识到,这样做的一种方法是传递某种“id”,然后支持bean可以使用它来识别有问题的对象。

然而,我想知道的是,JSF是否会允许我透明地这样做。我是否可以将任何对象指定为参数的值,然后在操作方法中从 RequestMap 中获取它?


答案 1

你不能用 .它需要附加到请求的 URL,因此它确实需要是 .只需使用<f:setPropertyActionListener>代替。<f:param>String

例如:

<h:commandLink value="Submit" action="#{bean.submit}">
    <f:setPropertyActionListener target="#{bean.otherBean}" value="#{otherBean}" />
</h:commandLink>

这样,就可用作内部方法。这样,您也不需要弄乱请求参数映射(在这种情况下,我宁愿使用托管属性注入代替)。#{otherBean}this.otherBeansubmit()<f:param>#{param.name}

替代方案是将<h:inputHidden>与战斧的<t:saveState>结合使用。另请参阅此博客文章,了解更多背景信息和示例。Converter


答案 2

推荐