Visualforceの持つ入力フィールドのデータバインディングの問題
-
20-09-2019 - |
質問
私は、Visualforceページ(はい、Salesforce.comは不快ですが、私が知っている)との奇妙な結果を持っています。私の問題は、私は、カスタムの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 / setメソッドを書いてみ
private workingFee;
public Fee__c getWorkingFee() {
return workingFee;
}
public void setWorkingFee(Fee__c value) {
workingFee = value;
}
これは
と何が違うのを動作するはずですなぜ何の論理的な理由はありませんpublic Fee__c workingFee { get; set; }
が、私の経験では、それが時々ありません...
あなたはそれが不快であることについて何を言いましたか? ;)
他のヒント
即時真/ = falseがあまりにも私にかなりの数回をかましています。グッドキャッチイアン。