0

commandButtonフィールドにrequired=true値が入力されていない場合に無効にする最善の方法は何ですか?

このボタンは、最初のページの読み込み時に無効にする必要があり、すべての必須フィールドが値を持つフィールドである場合にのみ有効にする必要があります。

最善のアプローチとは、javascript と最小コードがないことを意味します :-)

さらに、すべてが true と評価されたcommandButton場合にのみ が有効になれば素晴らしいでしょう。validators

PF 3.2 の使用

編集

  • 最良のアプローチとは、つまり、クライアント側でのみ評価する必要があるということです
4

2 に答える 2

2

これは 2 つの理由で不可能です。

  1. クライアント側の検証には、間違いなく JavaScript が必要です。
  2. コンポーネントのrequired属性はサーバー側のみに保存され、クライアントはデフォルトでどのフィールドが必要かわかりません。

を使用せずrequiredに、次のようにクライアント側でこれを実現できます。validateContentを無効にするロジックが含まれている必要がありますcommandButton

<h:inputText value="#{bean.text}" >
    <pe:javascript event="keyup" execute="validateContent();"/>
</h:inputText>

サーバーにアクセスしても問題ない場合は、次のようにします。

<h:inputText id="test1" value="#{bean.text}" required="true" immediate="true">
    <f:ajax listener="#{bean.makeDisable()}" render="test2" />
</h:inputText>
</h:commandButton id="test2" value="commandButton1" disabled="#{bean.disable}" />

そして豆で:

  private String text;
  private boolean disable;

  // setter & getter of text

  public boolean isDisable()
  {
    return disable;
  }

  public void makeDisable(AjaxBehaviorEvent event)
  {
    if(text == null || text.equals(""))
      this.disable=true;
    else
      this.disable=false;
  }

これは基本的にcommandButton、初期ロード時に無効をロードし、テキスト フィールドに値を入力したときにのみ有効になります。

于 2012-08-03T17:44:42.007 に答える
1

それは可能ですが、私はそれを「最善の方法」とは言いません。

ajax各フィールドの変更イベントのタグを提供する必要があります。各フィールドはimmediate最初の検証をスキップprocessする必要があり、に設定する必要があります@this

イベント リスナーでは、各必須フィールドに値が存在するかどうかを確認し、存在する場合は、commandButton が無効かどうかを決定するブール フィールドを設定できます。

これらのajaxタグはrender @thiscommandButton.

しかし、それでも実際には多くの Javascript が実行されており、直接記述しなければならないものはありません。

于 2012-08-03T17:46:54.640 に答える