2011-11-02 1 views
5

नियंत्रक में मेरे पास दो मान हैं:कैसे बिक्री करने के लिए Salesforce में एक सेटटर के लिए एक सूची पैरामीटर की आवश्यकता है, जैसे एक सूची <>?

public List<String> StringValue {get; set;} 
public List<String> ListValue {get; set;} 

ListValue कन्स्ट्रक्टर में प्रारंभ किया गया है और कई तार जोड़े गए हैं। इस बिंदु पर एक मूल्य में मैं VisualForce पृष्ठ में {! StringValue} और {! ListValue [1]} के साथ इनका संदर्भित कर सकता हूं। विशेष रूप से सूची फोकस है - मैं छद्म-स्थिरांक (गेटर्स) को इंडेक्स के रूप में भी जोड़ सकता हूं, {! ListValue [nameIndex]} को एक वैध संदर्भ बना रहा हूं।

हालांकि को एक सरल स्ट्रिंग मान के बजाय एक सूची मान सेट करने का प्रयास करते समय मैंने अपवाद में भाग लिया है।

<apex:param value="123" assignTo="{!ListValue[1]}" /> 

अपवाद java.lang.ClassCastException: java.lang.String cannot be cast to common.formula.FormulaFieldReference

मुझे लगता है कि मैं समस्या की मूल बातें समझता हूं - सेल्सफोर्स एक सेटर संदर्भ नहीं बना सकता है जिसमें एक इंडेक्स पैरामीटर शामिल है (जिसका मतलब है कि केवल पैरामीटर जो एक पैरामीटर लेते हैं, संदर्भित किया जा सकता है)।

क्या इसके आसपास कोई रास्ता है, या क्या मुझे सिर्फ सूची Value1, ListValue2 चर और संबंधित कोड की भारी मात्रा बनाना है?

उत्तर

3

यह एक हैक है, लेकिन यह आपको दर्जनों चर बनाने के लिए टालता है।

<apex:param value="1:123" assignTo="{!smartAssigner}" /> 
अपने नियंत्रक में

तब:

public void setSmartAssigner(String myval) { // parse the colon, set list value appropriately. 

आप अंदाजा हो।

0

मैं जिस शैली में आप अनुरोध कर रहा हूं उसमें ऐसा करने के लिए कभी भी ऐसा नहीं हुआ है, मैं सुझाव दूंगा कि यह करने के लिए सबसे आसान काम यह है कि आप एक पैरामीटर में इच्छित मानों को जोड़ना चाहते हैं और फिर उन्हें नियंत्रक के अंदर वापस विभाजित करें।

आपको <apex:repeat> के साथ ऐसा करने का एक उपयुक्त तरीका मिल सकता है लेकिन मुझे आपके पूर्ण उपयोग मामले पर यकीन नहीं है।