2010-08-30 18 views
10

jsf sayfasından parametreler için actionListener üzerinden yönetilen parametreleri geçirmeyi okudum. Bir parametreyi basit bir işlem yöntemine geçirmek de mümkün mü?JSF2 Eylem parametresi


senin tavsiyeleri için teşekkür ederiz hem ... okuma için teşekkür ederiz! Ben

:-) sensiz kaybedilecek benim için çalıştı takiben:

<h:commandLink id="link" action="#{overviewController.showDetails}" > 
    <f:setPropertyActionListener target="#{overviewController.show_id}" value="#{project.id}" /> 
    <h:outputText value="#{project.title}" /> 
</h:commandLink> 

Yani şimdi yeşil kene hak kim? : -P ikisini verebilir miyim?

cevap

13

Evet. Ya:

action="#{bean.method(param)}" 

Ya

<h:commandButton .. > 
    <f:setPropertyActionListener 
     target="#{bean.targetProperty}" value="#{param}" /> 
</h:commandbutton> 

(ve yöntemde fasulye özelliğini kullanın)

13

Bu formda parametreleri bahsediyorsunuz? EL uygulamasına bağlıdır. Sadece JBoss EL ve JSP 2.2 EL bunu yapabilir. JBoss EL nasıl kurulur this answer'da açıklanmaktadır.

Alternatif olarak, yalnızca f:param'u da kullanabilirsiniz. f:param yalnızca h:commandLink ile çalışmak için kullanılır, ancak JSF 2.0'den beri h:commandButton üzerinde çalışır. Örneğin. yönetilen fasulye özelliği olarak parametresini ayarlar bir @ManagedProperty ile

<h:commandButton action="#{bean.action}"> 
    <f:param name="foo" value="bar" /> 
</h:commandButton> 

: Eğer Ancak standart türlerine sınırlı olursunuz Bununla

@ManagedProperty("#{param.foo}") 
private String foo; 

(String, Number, Boolean). sözü

<h:commandButton action="#{bean.action}"> 
    <f:setPropertyActionListener target="#{bean.foo}" value="#{otherBean.complexObject}" /> 
</h:commandButton> 

yanı daha yolu vardır, ancak bu tüm tek fonksiyonel gereksinimi ve fasulye kapsamları bağlıdır: Alternatif f:setPropertyActionListener olduğunu. Muhtemelen her şeyden önce bir "parametre" iletmenize gerek yoktur.

3

Yeni özellikler.

public String action(Object complexObject) 

* Not: Eğer “el-impl dahil etmeye özen JSF2 yöntem olacaktır Eğer ManagedBean de

<h:commandButton action="#{bean.action(otherBean.complexObject)}"> 

yapabilmek böylece eylem yöntemi param aldığı verir -2.2.jar ”*

+0

Bu, JSF'ye özgü değil. Bu EL'ye özgü ve Servlet 3.0/JSP 2.2'nin bir parçası (Tomcat 7, Glassfish 3, JBoss AS 6, vb.). Yani, JSF 2.0'ı Servlet 2.5'te çalıştırdığınızda, işe yaramaz. Bu JSF sürümü ne olursa olsun. – BalusC