1

Mojarra JSFがバッキングモデルに基づいてテキストフィールドのサイズを制限する方法はありますか?

例、通常:

<p:inputText required="true" id="firstname" maxlength="50" value="#{user.firstName}"></p:inputText>

class User {
  @Size(max=50)
  String firstName;
}

すべてのフィールドにmaxlengthプロパティを追加することはできますが、同じフィールドを使用するフォームが複数ある場合は特に、メンテナンスに問題があると思います。また、フィールドの長さを変更した場合はどうなりますか?

apache myfacesの拡張ライブラリの1つにこの機能があることを正しく覚えている場合、mojarraに相当するものはありますか?

私は今、myfacesのmyfaces-extval-property-validationライブラリを使用していたことを覚えています。 http://myfaces.apache.org/extensions/validator12/validation-modules-project/myfaces-extval-property-validation/index.html

クロサギに相当するものはありますか?

ありがとう、
czetsuya

4

2 に答える 2

2

maxlengthを定義するbeanプロパティを持つことができます。次に、このタイプのすべてのテキストフィールドの長さを少なくとも1か所で変更できます。

@ManagedBean
@ApplicationScoped
public class MyBean {

    public int getType1MaxLength() {
        return 50;
    }
}

およびxhtml:

<p:inputText ... maxlength="#{myBean.type1MaxLength}" value="#{user.firstName}">
于 2012-12-08T08:14:53.343 に答える
1

エラー/検証メッセージなどのすべてのプロパティと、フィールドの最大長や変換パターンなどのユーザーフィールドの制約を構成する、 JSFリソースバンドルで制約を指定することで、要件をより適切に処理できます。

このようなすべての情報をバッキングBeanに格納する場合の問題は、JSF Webapp全体で使用できる単一のリソースバンドルファイルとは対照的に、これらの制約/プロパティは特定のBeanによってサポートされるビューでのみ使用できることです。デプロイメントのベストプラクティスでは、そのようなものをコードベースの外に置くこともお勧めします。特定のユースケース向け

  1. プロジェクトにJavaスタイルのパッケージを作成します。としましょうcom.you.jsf.resources。このパッケージに.propertiesは、フィールド設定を含むファイルを保存します。

       field.maxlength = 50
    
  2. ファイル内の1)からリソースバンドルパッケージを構成しfaces_config.xmlます。ここ<var>で、アプリケーション内のリソースファイルにアクセスするための変数名を指定します

       <application>
     <resource-bundle>
    <base-name>com.you.jsf.resources</base-name>
    <var>conf</var>
     </resource-bundle>
       </application>
    
  3. リソースファイル(およびその内容)は、JSFコンテキストでとして使用できるようになります#{conf['field.maxlength']}。これは、ビュー内で次のように使用できます。

      <p:inputText required="true" id="firstname" maxlength="#{conf['field.maxlength']}" value="#{user.firstName}"/>
    
于 2012-12-09T18:36:34.980 に答える