2010-01-17 102 views
14

我在找的是一個f:param標籤,它帶有一個我自己在value屬性中選擇的對象。然後,在action的backing bean方法中,我希望能夠從請求中提取該對象。 (對不起,如果我的術語不太好,我是JSF的新手)。我可以用JSF param標籤「傳遞」一個對象嗎?

現在,我可以在請求參數周圍傳遞字符串就好了。我也意識到一個參數總是會在http get或post中成爲String,所以我並不是,真的是傳遞了一個java對象。我也意識到,做這件事的一種方法是傳遞某種類型的「id」,然後輔助bean可以使用它來識別所討論的對象。

但是,我想知道的是,如果JSF將允許我透明地做到這一點。我可以指定任何對象作爲參數的值,然後從操作方法中的RequestMap中獲取它?

回答

20

你不能用<f:param>做到這一點。它需要附加到請求的URL,所以它確實需要是String。改爲使用<f:setPropertyActionListener>

E.g.

<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>結合Converter或使用Tomahawk的<t:saveState>。另請參閱this blog article瞭解更多背景信息和示例。

+0

嗯,我會被詛咒的,這正是我所期待的。謝謝! – 2010-01-17 23:09:19

相關問題