1

正しいですか:検証前に値を照会する場合(または検証が失敗した場合)は、を使用する必要がありますgetSubmittedValue();。値が検証されると、ページ/コントロールの後半で別の検証でクエリを実行しても、検証が成功するとnullが返されるため.getValue();、使用する必要がありますか?getSubmittedValue();

4

3 に答える 3

3

このxsnippetを使用すると、これを簡単に処理できます。呼び出すだけでgetComponentValue("inputText1")、valueまたはsubmitedValueのいずれかを取得できます。

参考のための関数は次のとおりです。

function getComponentValue(id){
  var field = getComponent(id);
  var value = field.getSubmittedValue(); 
  if( null == value ){ 
         // else not yet submitted 
         value = field.getValue(); 
  }
 
  return value
}
于 2012-06-19T07:31:51.250 に答える
2

少し簡単な方法があります。単純な単一値の文字列を期待している場合は、次のように呼び出します。

var compare = firstField.getValueAsString();

それ以外の場合は、次の電話番号に電話してください。

var compare = com.ibm.xsp.util.FacesUtil.convertValue(facesContext, firstField);

前者はとにかく後者を呼び出しますが、明らかに簡潔な構文です。これはあなたが探していることなどを行います:

  1. 値がまだ検証されていない場合は、送信された値を返します
  2. 検証がすでに合格している場合は、コンバータやコンテンツフィルタによって処理された後に値を返します。したがって、特に2つのフィールド値を比較しようとしている場合は、両方の値が適切にトリミングされていることを確認する必要があります。 。、したがって、送信された生の値を単に比較するよりも、誤検知を返す可能性は低くなります。
于 2012-06-19T08:45:13.213 に答える
0

ここで答えを見つけました。したがって、2つのテキストフィールドの値が同じであることを確認したい場合(ユースケース:メールを繰り返してください)、最初のボックスに失敗する可能性のある検証がすでに含まれている場合は、nullでない限りsubmitedValueを使用する必要があります。その後、値を使用します。 。2番目のフィールドの検証式のコードは次のようになります。

var firstField = getComponent("inputText1");
var compare = firstField.getSubmittedValue() || firstField.getValue();
compare == value;

あなたはそれを愛さなければなりません。

于 2012-06-19T07:23:17.667 に答える