مسألة بيانات الإدخال مع VisualForce
-
20-09-2019 - |
سؤال
لدي نتائج غريبة مع صفحة VisualForce (نعم ، Salesforce.com هو icky ، وأنا أعلم). مشكلتي هي أنني أحاول استخدام حقل الإدخال لربط البيانات على SOBJECT مخصصة ، ولكن في وحدة التحكم المخصصة الخاصة بي ، لا يتعرف على بيانات إدخال المستخدم.
فيما يلي مقتطف الرمز من الصفحة:
<apex:pageBlockSection title="Enter New Fee" rendered="{!isRenderedFees}" >
<apex:inputField value="{!workingFee.Fee_Type__c}" required="True"/>
<apex:inputField value="{!workingFee.Fee__c}" required="True"/>
<apex:pageBlockSectionItem >
<apex:CommandButton value="Save Fee" action="{!saveFee}" immediate="true" />
<apex:CommandButton value="Cancel" action="{!cancelFee}" immediate="true" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
وهنا هو الرمز من وحدة التحكم:
public Fee__c workingFee {get; set;}
....
public PageReference saveFee(){
this.workingFee.Trade_Group__c = tradeGroup.id;
try{
System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
upsert workingFee;
}catch (System.Dmlexception e){
ApexPages.addMessages(e);
return null;
}
System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
//savedFees.add(workingFee.clone());
//re-render the page
this.isRenderedFees = False;
return null;
}
لقد تأكدت من أن خاصية WorkingFee ليست فارغة. عندما أضغط على زر "حفظ الرسوم" بعد إدخال القيم ، فإنه يعيد تحميل الصفحة ويعطيني الرسالة "خطأ: الحقول المطلوبة مفقودة: [FEE__C] (ملاحظة ، FEE__: هنا حقل عملة - ليس الأمر كذلك. يتوقع أن يكون هذا بمثابة سوبور ، أليس كذلك؟)
يوضح بيان التصحيح في طريقة SaveFee () أن الحقول المهمة لـ WorkFee خالية ، عندما أتوقع أن يتم تعيينهم إدخال القيم من قبل المستخدم.
المحلول
لقد واجهت مجموعة كاملة من القضايا الضوابط الملزمة لخاصية مكشوفة مع البسيطة {get ؛ جلس؛ } تدوين ... سوف يرى بقية الكود الخاص بك الخصائص ، ولكن لسبب غريب ، لن يرتبط وجهة نظرك (دائمًا) ...
حاول كتابة طرق Get/Set الصريحة ، مثل
private workingFee;
public Fee__c getWorkingFee() {
return workingFee;
}
public void setWorkingFee(Fee__c value) {
workingFee = value;
}
لا يوجد سبب منطقي يجعل هذا الأمر مختلفًا عنه
public Fee__c workingFee { get; set; }
لكن في تجربتي ، في بعض الأحيان ...
ماذا قلت عن كونه icky؟ ؛)
نصائح أخرى
فوري = خطأ/حقيقي قد عضني عدة مرات أيضًا. جيد الصيد إيان.