2011-10-14 14 views
9

मैं डायनामिक रूप से तैयार लिंक का उपयोग कर रहा हूँ:JSF कनवर्टर: param

  <h:link outcome="/page" value="#{name}"> 
      <f:param name="name" value="#{name}"/> 
      </h:link> 

मैं च के लिए कस्टम कनवर्टर संलग्न करने के लिए करना चाहते हैं: # {नाम} आदि से रिक्त स्थान को हटाने के लिए परम लेकिन कोई एफ कनवर्टर संपत्ति एफ: परम।

उत्तर

14

एक Converter इनपुट फ़ील्ड में जटिल वस्तुओं और इसके विपरीत करने के लिए प्रस्तुत String अनुरोध पैरामीटर मान से परिवर्तित करने के लिए intented है। हालांकि, <f:param> केवल शुद्ध आउटपुट है और यह हमेशा मूल्य पर toString() पर कॉल करेगा। यह Converter का समर्थन नहीं करता है।

<f:param name="name" value="#{util:prettyUrl(name)}"/> 

अद्यतन:

आपका साफ और सबसे अच्छा शर्त एक custom EL function बनाने के लिए, ताकि आप अंततः की तरह अंत है JSF उपयोगिता पुस्तकालय OmniFaces है संस्करण 1.4 (मार्च 2013) के बाद से एक <o:param> घटक जो <f:param> को पूर्णतया जेएसएफ कनवर्टर के समर्थन के साथ बढ़ाता है, ठीक उसी तरह जैसे आप <h:outputText converter> में उपयोग करेंगे।

<h:link outcome="/page" value="#{name}"> 
    <o:param name="name" value="#{name}" converter="somePrettyURLConverter" /> 
</h:link> 

showcase भी देखें।

+1

मेरे पास एक ही सवाल था और मैं इस तरह के समाधान से वास्तव में संतुष्ट नहीं हूं। प्राप्तकर्ता साइट पर 'f: viewParam' का उपयोग कनवर्टर का उपयोग करके ऑब्जेक्ट को पुनर्प्राप्त करने के लिए किया जाता है। तो यह 'एफ: param' के साथ कनवर्टर का उपयोग करने के लिए सीधे आगे होगा। चूंकि उस तर्क को पहले ही कनवर्टर में लागू किया गया है। अब यह तर्क दृश्य में भी मौजूद है और यदि मैं शायद नाम से आईडी में परम बदलता हूं तो मुझे कनवर्टर और साइट को बदलना होगा। कस्टम एल फ़ंक्शन एक वर्कअराउंड होगा, कम से कम अगर प्रारंभिक कनवर्टर इसका भी उपयोग करेगा। – djmj

+2

ने अपनी omnifaces लाइब्रेरी में 'o: param' टैग जोड़ा और यह बहुत अच्छी तरह से काम करता है। – djmj

1

यदि आप ऐसा कुछ करते हैं तो क्या होगा?

<f:param name="name" value="#{name.replace(' ', '')}" /> 

क्या यह काम नहीं कर रहा है?

या आप सभी < एफ के लिए चाहते हैं: param ... ??

सादर

+0

वास्तव में, रूपांतरण अधिक जटिल है, इसलिए मुझे जावा फ़ंक्शन की आवश्यकता है। अभी के लिए मैं प्रबंधित बीन फ़ंक्शंस का उपयोग करता हूं 'f: param name =" name "value =" # {util.myfunction (name)} "/>' – mm1

+1

@ mm1: मुझे नहीं लगता कि आपके पास दूसरा समाधान है .. यह नहीं करता समझ में नहीं आता ... आप जो चाहते हैं वह # {name} की वापसी को प्रतिस्थापित करना है जब Alex