1

JSF ページに次の行があります。

<h:commandLink action="#{myBean.test}" value="Wizard Step"></h:commandLink>

ページが読み込まれると、 myBean に対応する Bean がインスタンス化されることを期待しています (これは Eclipse デバッガーで確認できます)。

JSF の残りの部分は正しく機能していますが、この Bean は解決されていません (エラーなし)。

Bean の解決に失敗した el からエラーを取得するにはどうすればよいですか?

4

1 に答える 1

1

EL エラーがある場合は、必ずjavax.elpackageの例外が発生します。

  • ELException: 式の評価中に発生する可能性のある例外条件を表します。
  • MethodNotFoundException: の評価中にメソッドが見つからなかった場合にスローされMethodExpressionます。
  • PropertyNotFoundExceptionValueExpression:またはの評価中にプロパティが見つからなかった場合にスローされますMethodExpression
  • PropertyNotWritableException: に値を設定しているときにプロパティに書き込めなかった場合にスローされますValueExpression

あなたの場合、マネージド Bean は最初のリクエストでは構築されません。これは、マネージド Bean がビューの他の場所で参照されていないことを意味するだけです。EL inaction属性は、フォームが送信されたときにのみ評価されます。そのため、Bean はアクションが呼び出されたときにのみ構築されます。テストとして#{myBean}、ビューのどこかに置いてみてください。最初のリクエストで構築されることがわかります。

あなたの本当の問題は、コマンド ボタン アクションが単に呼び出されないため、アクション属性の EL がまったく評価されないことです。この問題は、EL 側ではデバッグも特定もできません。ボタン アクションが呼び出されない場合、考えられる原因は多数あります。ここですべて見つけることができます: commandButton/commandLink/ajax action/listener method not invoked or input value not updated。スターターの間で最も一般的な原因は<h:dataTable>、値が適切に保存されておらず、フォーム送信リクエスト中にまったく異なる値を返すような繰り返しコンポーネント内にボタンがあるか、コンポーネントまたはそのコンポーネントの 1 つにrendered適切でない属性があることです。保存され、デフォルトはfalseです。

于 2012-01-14T13:53:26.650 に答える