2011-03-13 8 views
21

जेएसएफ 1.2 दो पेज (एक। एक्सएचटीएमएल और अन्य.एक्सएचटीएमएल) है,
जो नियम के बाद वर्तमान पृष्ठ में शामिल हैं:जेएसएफ 1.2: यूई: पैरामीटर के साथ शामिल करें

... 
    <c:if test="#{flowScope.Bean.param1}"> 
     <ui:include src="one.xhtml"/> 
    </c:if> 

    <c:if test="#{!flowScope.Bean.param1}"> 
     <ui:include src="other.xhtml"/> 
    </c:if> 
... 

अब तक one.xhtml केवल other.xhtml से अलग है पैरामीटर द्वारा:

one.xhtml: <h:commandLink action="actionOne">
अन्य .xhtml: <h:commandLink action="actionTwo">

क्या कुछ सामान्य xhtml का उपयोग करना संभव है?
एक .xhtml और अन्य .xhtml के बजाय, इस तरह कुछ:

... 
    <c:if test="#{flowScope.Bean.param1}"> 
     <ui:include src="general.xhtml" param="actionOne"/> 
    </c:if> 

    <c:if test="#{!flowScope.Bean.param1}"> 
     <ui:include src="general.xhtml" param="actionTwo"/> 
    </c:if> 
... 

मदद के लिए धन्यवाद।

उत्तर

47

आपको शामिल फ़ाइल में पैरामीटर पास करने के लिए <ui:include> के अंदर <ui:param> घोंसला करने की आवश्यकता है।

<ui:include src="general.xhtml"> 
    <ui:param name="action" value="actionOne" /> 
</ui:include> 

और में शामिल हैं:

<h:commandButton action="#{action}" /> 

ध्यान दें कि यह केवल तार, नहीं कार्रवाई के तरीकों का समर्थन करता है। बाद के लिए आपको जेएसएफ 2.0 में अपग्रेड करना होगा और composite components का उपयोग करना होगा।

+0

धन्यवाद, मैं सीसी के बारे में khow, वे महान हैं, लेकिन वर्तमान में जेएसएफ 1.2 प्रोजेक्ट उनका उपयोग नहीं कर सकता। मैं आपके समाधान का प्रयास करूंगा और परिणामों के बारे में वापस लिखूंगा। – sergionni

+0

यह आपके द्वारा प्रश्न में प्रस्तुत किए गए तरीके के आधार पर काम करेगा। लेकिन अगर आप 'action {ne'' के बजाय '# {bean.doSomething} 'का उपयोग कर रहे थे, तो आपको वास्तव में जेएसएफ 2.0 समग्र घटकों को पकड़ने की आवश्यकता होगी। – BalusC

+0

अजीब, यह फेंकता है: action = "# {action}": पहचान 'क्रिया' शून्य थी और – sergionni

19

BalusC के जवाब के अलावा:

नोट यह केवल तार, नहीं कार्रवाई के तरीकों का समर्थन करता है कि। बाद के लिए आप को जेएसएफ 2.0 और पर अपग्रेड करने की आवश्यकता होगी समग्र घटकों का उपयोग करें।

वहाँ JSF 1.2 के साथ ऐसा करने के लिए एक रास्ता है, हालांकि यह कुछ हद तक बदसूरत है:

<ui:include src="general.xhtml"> 
    <ui:param name="actionBean" value="#{myBackingBean}" /> 
    <ui:param name="actionMethod" value="edit" /> 
</ui:include> 

और

<h:commandButton action="#{actionBean[actionMethod]}" /> 
संबंधित मुद्दे