1

マネージド Bean の値に直接バインドされた編集ボックスがあります。値は、1 行の式言語を使用して設定されます。Bean の値は double 型で、Java のデフォルトでは 0.0 に設定されています。

コードは次のとおりです: statusBean.adMoney

私の xpage では、デフォルト値を表示したくありません。デフォルトとして 0.00 を使用せずにユーザーに値を入力してもらいたいのですが、空の編集ボックスを表示したいだけです。

これを達成するための最善のアプローチを共有してください。SSJS で Bean に直接バインドし、編集可能にすることは可能ですか? ELでifステートメントを実行することは可能ですか? データ型を文字列にして、それに対して計算を行う必要があるときに値を変換したほうがよいのでしょうか?

4

1 に答える 1

3

この customConverter を inputText フィールドに追加します

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
    <xp:this.converter>
        <xp:customConverter
            getAsObject='#{javascript:value=="" ? 0 : parseFloat(value)}'
            getAsString='#{javascript:value==0 ? "" : value.toString()}' />
    </xp:this.converter>
</xp:inputText>

常に値「0.0」を非表示にします。このフィールドは、最初とユーザーが「0」を入力して送信するたびに空になります。

アップデート:

「0」が有効な値である場合、これはより良い解決策です:

doubleフィールドの代わりに Bean で使用しDoubleます。クラスのように、それDoubleはすることができます null。上記のコードを適応させると、次のようになります。

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
    <xp:this.converter>
        <xp:customConverter
            getAsObject='#{javascript:value=="" ? null : parseFloat(value)}'
            getAsString='#{javascript:value==null ? "" : value.toString()}' />
    </xp:this.converter>
</xp:inputText> 

しかし、幸いなことに、この customConverter の動作はすでに inputText コントロールの標準になっています。Doubleフィールド値が常にnull編集ボックスに空の値として表示されます。ユーザーが編集ボックスの数字を削除すると、Bean のフィールドは に設定されnullます。

Doubleそのため、フィールドの代わりにdoubleフィールドを使用する場合、次のコードのみが必要です。

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
</xp:inputText> 
于 2013-06-24T21:09:14.747 に答える