سؤال

لدي نتائج غريبة مع صفحة 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؟ ؛)

نصائح أخرى

فوري = خطأ/حقيقي قد عضني عدة مرات أيضًا. جيد الصيد إيان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top