2010-01-17 18 views
14

Aradığım şey, öznitelikte kendi seçtiğim bir Nesneyi olan bir f: param etiketine sahip olmak. Daha sonra, eylem için destek fasulyesi yönteminde, bu Nesneyi istek üzerine çekebilmek istiyorum. (Benim terminolojimin o kadar iyi değilse üzgünüm, JSF için yeniyim).JSF param etiketi olan bir nesneyi "geçirebilir miyim?"

Şimdi, dizeleri isteğinize göre param iyi bir şekilde iletebilirim. Ayrıca, bir parametrenin her zaman bir http dizisi veya postada bir Dize olacağının farkındayım, bu yüzden bir java nesnesini geçen gerçekten değilim. Bunu yapmanın bir yolunun, destek fasulyesinin söz konusu Nesneyi tanımlamak için kullanabileceği bir türden bir "id" iletmek olduğunu fark ettim.

Ancak merak ettiğim şey, JSF'nin bunu şeffaf bir şekilde yapmamı sağlayacak olmasıdır. Herhangi bir nesneyi paramın değeri olarak belirleyebilir ve daha sonra bir eylem yönteminde RequestMap'ten alabilir miyim?

cevap

20

Bunu <f:param> ile yapamazsınız. İsteğin URL'sine eklenmelidir, bu yüzden gerçekten String olmalıdır. Bunun yerine <f:setPropertyActionListener> kullanın.

E.g.

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

Bu şekilde #{otherBean} sadece mevcut submit()this.otherBean olarak yöntemdir. Bu şekilde, istek parametre eşlemesiyle de uğraşmanıza gerek yoktur (bunun için <f:param> olması durumunda yerine yönetilen özellik enjeksiyonu kullanılır).

Alternatifler bir Converter birlikte <h:inputHidden> kullanırken veya Tomahawk en <t:saveState> kullanıyor. Ayrıca daha fazla bilgi ve örnek için this blog article'a bakın.

+0

Peki ben lanetleneceğim, tam da aradığım şey buydu. Teşekkür ederim! –

İlgili konular