【Salesforce】 does not support fields on a Salesforce object.

【Salesforce】 does not support fields on a Salesforce object.

Visualforceで<apex:input> を使用した際に、コンパイルエラーが発生しました。

 
<apex:input> does not support fields on a Salesforce object.

<apex:input> にはSObjectのフィールドを使用できないということですね。

エラーの後ろには、<apex:inputField>を使ってねと記述してありました。

しかし、<apex:inputField>を使いたくないときもありますよね。

<apex:input>にtypeを指定したい時なんかですね。

そこで、少しだけ工夫をしました。

Visualforce側のコードです。

<apex:input type="number" value="{!SelectField}" />

こちらはコントローラのApexコードです。

// get method
public Decimal getSelectField(){

    Decimal val = null;
    if(String.isNotEmpty(this.obj.SelectField__c)){
    
        val = Decimal.valueOf(this.obj.SelectField__c);
    }
    
    return val;
}

// set method
public void setSelectField(Decimal param){

    String val = '';
    if(param != 0){
    
        val = String.valueOf(param);
    }
    
    this.obj.SelectField__c = val;
}

選択リストをtype=”number”で使用しています。

get・setメソッドを作ってやればいいわけですね。

type=”number”の形式だと空白の場合に0が入ってくるようなので、そのあたりの処理は考える必要がありそうです。

この例では0は未入力扱いとしています。

No comments.

コメントを残す

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