문제

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 속성이 null이 아닌지 확인했다. 값을 입력 한 후 "저장 수수료"버튼을 누르면 페이지를 다시로드하고 "오류 : 필수 필드가 누락되었습니다 : [fee__c](참고, fee__c 여기에 통화 필드가 아닙니다. 이것이 Sobject가 될 것으로 예상합니까?)

SaveFee () 메소드의 디버그 명령문은 WorkingFee의 중요한 필드가 사용자가 입력 한 값을 할당 할 것으로 예상 할 때 NULL임을 보여줍니다.

도움이 되었습니까?

해결책

나는 간단한 {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