2013-01-23 9 views
13

आईएसएम जेएसएफ में नया है। SetPropertyActionListener बनाम विशेषता बनाम param के बीच क्या अंतर है? ? जब setPropertyActionListener का उपयोग किया जाएगा धन्यवाद अग्रिमजेएसएफ कोर टैग: सेटप्रॉपर्टीएक्शन लिस्टनर बनाम विशेषता बनाम पैरा

+3

संबंधित: http://balusc.blogspot.com/2006/06/communication-in-jsf.html ध्यान दें कि ईएल 2.2 के बाद से आप उन टैग्स की आवश्यकता के बिना सीधे कार्रवाई विधियों में तर्क पारित कर सकते हैं। – BalusC

उत्तर

28

1. च: setPropertyActionListener:

इस टैग के साथ, आप सीधे आप सेम समर्थन में गुण सेट कर सकते हैं। उदाहरण:

एक्सएचटीएमएल:

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

समर्थन सेम:

@ManagedBean 
@SessionScoped 
public class MyBean{ 

    public String name; 

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

} 

यह myname मूल्य समर्थन सेम के name संपत्ति सेट हो जाएगा।

2. च: param:

इस टैग को सरल सेट अनुरोध पैरामीटर। उदाहरण:

एक्सएचटीएमएल:

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

3. च: विशेषता:

इस टैग को आप पास कर सकते हैं के साथ

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

ताकि आप समर्थन की फलियों में इस पैरामीटर प्राप्त कर सकते हैं विशेषता है ताकि आप अपनी बैकिंग बीन की एक्शन श्रोता विधि से उस विशेषता को पकड़ सकें।

एक्सएचटीएमएल:

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

आप f:setPropertyActionListener का उपयोग करना चाहिए आप समर्थन सेम की संपत्ति सेट करना चाहते हैं जब भी:

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

ताकि आप कार्रवाई श्रोता विधि से इस विशेषता को मिल सकती है। यदि आप बैकिंग बीन पर पैरामीटर पास करना चाहते हैं तो f:param और f:attribute पर विचार करें। साथ ही, यह जानना महत्वपूर्ण है कि f:param के साथ आप String मानों को पास कर सकते हैं, और f:attribute के साथ आप ऑब्जेक्ट पास कर सकते हैं।

संबंधित मुद्दे