【Salesforce】選択リスト項目の値が変化した

【Salesforce】選択リスト項目の値が変化した

Salesforceのオブジェクトには選択リストのフィールドがありますが、ApexやVisualforceを使用することで選択リストに存在しない文字列を設定することができます。

その際に、Viaualforce側で入力した値がトリガに入る際に別の値となる現象が発生したため、メモです。

このような記述があったとします。

選択リストに値を設定するための記述です。

public String getPickVal(){
    return this.obj.PickupField__c;
}
public void setPickVal(String val){
    this.obj.PickupField__c = val;
}
<apex:inputText value="PickVal" />

ページ側で値を入力し、保存した際に現象は発生しました。

DMLを発行する直前と、トリガに入った直後で「obj.PickupField__c」の値が違うものになっていました。

選択リストの項目は

「8.0」「8.5」「9.0」「9.5」「10.0」「10.5」「11.0」

となっていました。

入力して保存しようとした値は「10.1」と、選択リスト値に存在しない値です。

実際に設定された値は「10.1」でした。

全角になっていますね。

しばらく調べていると、選択リスト項目の「無効な値」に「10.1」というものが存在していることに気がつきました。

もしやと思って色々と試してみると、入力した値に近いものがあればそれに合わせて設定してくれるようです。

つまり、入力した「10.1」をトリガに入る直前で「無効な値」に存在する「10.1」に直してくれたのですね。

エラーのテストをする予定だったのですが、思いも寄らぬところでハマってしまいました。

選択リストの項目には気をつけなければいけませんね。

そもそも、選択リスト値に設定した値に合わせようとするというのは初めて知りました。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です