2013-01-23 30 views
13

Iam mới trong JSF.Điều gì là sự khác biệt giữa setPropertyActionListener vs thuộc tính vs param? ? Khi sẽ sử dụng setPropertyActionListener .Thanks trướcThẻ lõi JSF: setPropertyActionListener vs thuộc tính vs param

+3

Liên quan: http://balusc.blogspot.com/2006/06/communication-in-jsf.html Lưu ý rằng kể từ EL 2.2 bạn có thể chuyển đối số trực tiếp vào các phương thức hành động mà không cần bất kỳ thẻ nào trong số đó. – BalusC

Trả lời

28

1. f: setPropertyActionListener:

Với thẻ này, bạn có thể trực tiếp đặt thuộc tính trong bạn ủng hộ đậu. Ví dụ:

xhtml:

<h:commandButton action="page.xhtml" value="OK"> 
    <f:setPropertyActionListener target="#{myBean.name}" value="myname"/> 
</h:commandButton> 

ủng hộ đậu:

@ManagedBean 
@SessionScoped 
public class MyBean{ 

    public String name; 

    public void setName(String name) { 
     this.name= name; 
    } 

} 

này sẽ thiết lập name tài sản của đậu sao để đánh giá myname.

2. f: param:

Thẻ này bộ đơn giản tham số yêu cầu. Ví dụ:

xhtml:

<h:commandButton action="page.xhtml"> 
    <f:param name="myparam" value="myvalue" /> 
</h:commandButton> 

vì vậy bạn có thể nhận được thông số này ở đậu ủng hộ:

FacesContext.getExternalContext().getRequestParameterMap().get("myparam") 

3. f: attribute:

Với thẻ này bạn có thể vượt qua để bạn có thể lấy thuộc tính đó từ phương thức lắng nghe hành động của bean sao lưu của bạn.

xhtml:

<h:commandButton action="page.xhtml" actionListener="#{myBean.doSomething}"> 
    <f:attribute name="myattribute" value="myvalue" /> 
</h:commandButton> 

vì vậy bạn có thể nhận được thuộc tính này từ phương pháp hành động nghe:

public void doSomething(ActionEvent event){ 
    String myattr = (String)event.getComponent().getAttributes().get("myattribute"); 
} 

Bạn nên sử dụng bất cứ khi nào f:setPropertyActionListener bạn muốn thiết lập thuộc tính của bean ủng hộ. Nếu bạn muốn chuyển tham số cho bean sao lưu, hãy xem xét f:paramf:attribute. Ngoài ra, điều quan trọng là phải biết rằng với f:param bạn chỉ có thể vượt qua các giá trị String và với f:attribute bạn có thể chuyển đối tượng.

Các vấn đề liên quan