2010-01-17 16 views
14

जो मैं खोज रहा हूं वह है f: param टैग को मेरे द्वारा ऑब्जेक्ट विशेषता में चुनने के उद्देश्य से। फिर, कार्रवाई के लिए बैकिंग बीन विधि में, मैं इस ऑब्जेक्ट को अनुरोध से खींचने में सक्षम होना चाहता हूं। (क्षमा करें अगर मेरी शब्दावली बहुत अच्छी नहीं है, तो मैं जेएसएफ के लिए नया हूं)।क्या मैं किसी ऑब्जेक्ट को जेएसएफ परम टैग के साथ "पास" कर सकता हूं?

अब, मैं अनुरोध पैरामीटर में स्ट्रिंग्स को ठीक से पास कर सकता हूं। मुझे यह भी एहसास है कि एक पैरामीटर हमेशा http प्राप्त या पोस्ट में स्ट्रिंग होने जा रहा है, इसलिए मैं वास्तव में जावा ऑब्जेक्ट पास नहीं कर रहा हूं। मुझे यह भी एहसास है कि ऐसा करने का एक तरीका किसी प्रकार की "आईडी" को पारित करना होगा, जिसका उपयोग बैकिंग बीन तब प्रश्न में ऑब्जेक्ट की पहचान करने के लिए किया जा सकता है।

मैं क्या सोच रहा हूं, हालांकि, जेएसएफ मुझे पारदर्शी रूप से ऐसा करने की अनुमति देगा। क्या मैं किसी ऑब्जेक्ट को param के मान के रूप में निर्दिष्ट कर सकता हूं और उसके बाद इसे एक क्रिया विधि में RequestMap से प्राप्त कर सकता हूं?

उत्तर

20

आप <f:param> के साथ ऐसा नहीं कर सकते हैं। इसे अनुरोध के यूआरएल में जोड़ा जाना चाहिए, इसलिए इसे वास्तव में String होना चाहिए। इसके बजाए बस <f:setPropertyActionListener> का उपयोग करें।

उदा।

<h:commandLink value="Submit" action="#{bean.submit}"> 
    <f:setPropertyActionListener target="#{bean.otherBean}" value="#{otherBean}" /> 
</h:commandLink> 

इस तरह #{otherBean}submit() बस के रूप में उपलब्ध this.otherBean अंदर विधि है। इस तरह आपको अनुरोध पैरामीटर मानचित्र के साथ गड़बड़ करने की आवश्यकता नहीं है (जिसके लिए <f:param> के मामले में मैं प्रबंधित संपत्ति इंजेक्शन के बजाय #{param.name} के साथ उपयोग किया होगा)।

विकल्प <h:inputHidden>Converter के साथ संयोजन में या टॉमहॉक के <t:saveState> के साथ संयोजन में उपयोग कर रहे हैं। अधिक पृष्ठभूमि जानकारी और उदाहरणों के लिए this blog article भी देखें।

+0

वैसे मैं शापित हो जाऊंगा, यही वही है जो मैं ढूंढ रहा था। धन्यवाद! –

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

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