0

値式に含まれる値を取得しようとしています。私はいくつかの検証のためにそれを使用する必要があります。HTMLOutput に値式を設定すると、画面に表示されます。私が間違っていることを提案してください。

HtmlOutputText output = new HtmlOutputText();
ve = ef.createValueExpression(elCtx, "#{dynamicRow["+ i + "]}", String.class);
//I have tried all options here that I came across.
//Either test1 , test2 , test3 should have the value ve has, but all of them have value "".
String test1 = (String)ve.getValue(elCtx);
String test2 = (String)output.getValue();
Application app = fCtx.getApplication( );
String test3 = (String) app.evaluateExpressionGet(fCtx, "#{dynamicRow["+ i + "]}", String.class);
output.setValueExpression("value", ve);
//the ve gets displayed in the column with correct string values and not ""
column.getChildren().add(output);
// I also tried ValueReference as given in ValueExpression: how to get base Object?
ValueReference valueReference = ve.getValueReference(elCtx);
//an exception is thrown here javax.el.PropertyNotFoundException: Target Unreachable, identifier 'dynamicRow' resolved to null
Object base = valueReference.getBase();
Object property = valueReference.getProperty();

私のテーブルには次のコードがあります:

FacesContext fCtx = FacesContext.getCurrentInstance();
ELContext elCtx = fCtx.getELContext();
ExpressionFactory ef = fCtx.getApplication().getExpressionFactory();
HtmlExtendedDataTable dynamicDataTable = new HtmlExtendedDataTable();
HtmlDatascroller datascroller = new HtmlDatascroller();
ValueExpression ve = ef.createValueExpression(elCtx,"#{myController.dynamicList}", List.class);
dynamicDataTable.setValueExpression("value", ve);
dynamicDataTable.setVar("dynamicRow");
4

1 に答える 1

0

var値は、テーブルが処理中にスコープに配置したdynamicRow場合にのみスコープ内にあります。これは、コンポーネントのさまざまなメソッドによって実行されます。process*

setRowIndex(int)ドキュメントを参照してください:

  • すべての子孫コンポーネントの現在の状態情報を保存します(以下で説明します)。
  • 新しい行インデックスを保存し、それをこのUIDataインスタンスに関連付けられたDataModelに渡します。
  • 新しいrowIndex値が-1の場合:
    • プロパティがnullでない場合はvar、対応するリクエストスコープ属性(存在する場合)を削除します。
    • すべての子孫コンポーネントの状態情報をリセットします(以下で説明します)。
  • 新しいrowIndex値が-1でない場合:
    • プロパティがnullでない場合はvar、getRowData()を呼び出して、結果のデータオブジェクトをリクエストスコープ属性として公開します。この属性のキーはvarプロパティ値です。
    • すべての子孫コンポーネントの状態情報をリセットします(以下で説明します)。
于 2013-02-19T09:33:07.840 に答える