2012-09-19 15 views
6

文字列をJSFのhLselectOneMenuでIntegerに変換したい。h:selectOneMenuで文字列を整数に変換する方法

<h:selectOneMenu id="rowsPerPage" value="#{AccountsController.rowsPerPage}" converter="javax.faces.Integer" maxlength="3">          
    <f:selectItem itemValue="10" itemLabel="10" /> 
    <f:selectItem itemValue="50" itemLabel="50" /> 
    <f:selectItem itemValue="100" itemLabel="100" /> 
    <f:selectItem itemValue="500" itemLabel="500" />          
    <f:selectItem itemValue="094332" itemLabel="Custom" /> 
    <f:ajax render="customrowperpage" /> 
</h:selectOneMenu>&nbsp; 
    <h:inputText id="customrowperpage" value="#{AccountsController.rowsPerPage}" rendered="#{AccountsController.rowsPerPage == '094332'}" required="true" /> 

これをJSFページでどのように行うことができますか?

P.Sコードを更新しましたが、AJAXコードは機能しません。 「カスタム」を選択すると、入力フィールドはレンダリングされません。

答えて

5

ここにいくつかの問題があります。

  • 部品h:selectOneMenusizeという名前の属性がありません。これを削除します。

  • 選択項目customは整数に解決できません。この選択項目が存在する限り、エラーが発生します。

  • h:selectOneMenuコンポーネントに数値コンバータを追加する必要があります。 <f:convertNumber integerOnly="true" />

あなたはこれらを解決したら、次に整数型である管理プロパティにコンポーネントの値を結合問題ありません。

+0

+1は、h:selectOneMenuにサイズ属性がないことを示唆しています。私はこの同じ問題をh:inputTextをh:selectOneMenuに変換して調べました。 – Catfish

14

コンバータ属性を使用して整数コンバータを追加します。

<h:selectOneMenu converter="javax.faces.Integer"/> 
+1

これは、PrimeFacesの ''では機能しません。それを除けば、コンポーネントはこれをまったく必要としていないようです。 (これをgoogleする人のためだけに) – Kawu

+0

@カウワンほとんどの場合、コンポーネントは問題なしで_value_の型を検出できます。これがうまくいかない場合があります - Genericsの使用例:コンパイル時には_Integer_があることがわかりますが、バイトコードでは_Object_です。ここでこの解決策が役立ちます! – DaniEll

関連する問題