मैं एक पुन: प्रयोज्य ui घटक चाहता हूं जो मॉडल से जुड़ा हुआ है।जेएसएफ में पुन: प्रयोज्य घटक कैसे बनाएं?
उदाहरण के लिए:
- मैं एक selectonemenu है कि एक और selectonemenu को श्रृंखलित है (विभाग की तरह -> उप विभाग)
- चाहेंगे इस एक समग्र घटक
- यह संयुक्त घटक है बनाने के लिए एक विशिष्ट जेएसएफ बीन
मुझे लगता है कि यह विचार काम करता है अगर मैं केवल एक समग्र कॉम्पोनेंट का उपयोग कर रहा हूं।
लेकिन अगर मैं एक ही प्रकार के एक से अधिक compositeComponent का इस्तेमाल करते हैं यह, काम नहीं करेगा क्योंकि compositeComponent के JSF बीन हो जाएगा एक ही (इस उदाहरण में, im दृश्य दायरे का उपयोग करके), और राज्य का हिस्सा होगा एक या अधिक समग्र कंपोनेंट्स के बीच।
यह एक मोटा उदाहरण है जो मेरे भ्रम को दर्शाता है। इस मामले में, Page1.xhtml (Page1Bean.java का मुख्य मॉडल के साथ), बनाता है 2 compositeComponents (जो MyCompositeComponent.java की JSF बीन द्वारा नियंत्रित किया जाता)
समग्र घटक के उपयोग होगा कुछ की तरह:
<!-- one composite component that has 2 chained selectOneMenus -->
<h:selectOneMenu
...
value="#{myCompositeComponentBean.firstComboValue}"
valueChangeListener="#{myCompositeComponentBean.yyy}">
<f:ajax event="valueChange" execute="@this" ... />
<f:selectItem itemLabel="Choose one .." noSelectionOption="true" />
<f:selectItems value="#{myCompositeComponentBean.firstComboList}" .... />
</h:selectOneMenu>
<h:selectOneMenu
...
value="#{myCompositeComponentBean.secondComboValue}"
valueChangeListener="#{myCompositeComponentBean.bbb}">
<f:selectItem itemLabel="Choose one .." noSelectionOption="true" />
<f:selectItems value="#{myCompositeComponentBean.secondComboList}" .... />
</h:selectOneMenu>
और समग्र घटक के JSF बीन हो जाएगा की तरह:
....
main department : <my:comboChainComponent /> <!-- 2 select items will be rendered here -->
secondary department : <my:comboChainComponent /> <!-- another 2 select items will be rendered here -->
....
:
// this model will serve the composite component
@Named
@Scope("view")
public class MyCompositeComponentBean {
private String firstComboValue, secondComboValue;
private List<String> firstComboList, secondComboList;
...
}
यह Page1.xhtml का एक उदाहरण है 210
और Page1Bean (Page1.xhtml के लिए मुख्य JSF बीन)
@Named
@Scope("view")
public class Page1Bean {
// inject the first bean for the composite component 1
@Inject private MyCompositeComponentBean bean1;
@Inject private MyCompositeComponentBean bean2;
...
}
यह पुनर्प्रयोग के इस प्रकार प्राप्त करने के लिए संभव है?
धन्यवाद।
हैलो, प्रतिक्रिया के लिए धन्यवाद। मेरे पास अभी तक एक समग्र घटक विकसित करने में तकनीकी कठिनाइयों नहीं हैं, लेकिन यह इस मिश्रित घटक को इसके युग्मित जेएसएफ बीन के साथ पुन: प्रयोज्य बनाने के तरीके के बारे में अधिक है, जिसे एक ही पृष्ठ में कई बार उपयोग किया जा सकता है। – bertie
हाय अल्बर्ट, आप समग्र घटक को मश के रूप में उपयोग कर सकते हैं जैसा कि आप एक पृष्ठ में चाहते हैं (भले ही मैं वास्तव में आवश्यकता को समझ नहीं पाता)। –