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 속성이 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에 대해 무엇을 말했습니까? ;)
다른 팁
즉각적인 = 거짓/진실은 나를 꽤 많이 물었습니다. 좋은 캐치 이안.
제휴하지 않습니다 StackOverflow