У меня странные результаты на странице Visualforce (да, я знаю, Salesforce.com неприглядный). Моя проблема в том, что я пытаюсь использовать inputField для привязки данных к пользовательскому 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__c - это поле валюты - это не так, ожидает, что это будет sObject, не так ли?)
Оператор отладки в методе saveFee () показывает, что важные поля workingFee являются нулевыми, когда я ожидал, что им были присвоены значения, введенные пользователем.