2012-04-18 16 views
2

JSFメソッドにパラメータを渡す方法を尋ねるいくつかの質問があります。 EL2.2とサーブレット3.0を使用すると、ユーザーはパラメータをメソッド呼び出しに渡すことができます。 一つの例:How to pass an argument to method from rendered h:outputText?質問です:JSF 2.xでは、各タグの属性は、のValueExpressionまたはMethodExpressionのいずれかを取ることになっています。リンクされた例では、 "rendered"はValueExpressionだけを取ることになっています。しかし、私はそれがメソッドの呼び出しではなくプロパティであることを明確にするために()を置くと、それはMethodExpressionで動作することがわかります。これは何かJSF 2.xの仕様がちょうどうんざりしているのですか、何か不足していますか?値式に新しいEL 2.2呼び出し-方法-と、引数の構文を使用してEL 2.2でJSF 2.xを使用すると、ValueExpressionの代わりにMethodExpressionを使用できますか?

答えて

1

自動的にそのメソッド式か何かがありません。これはまだ値式です。値式は、指定されたEL式の戻り値を値として使用します。メソッド式は、コンポーネントに関連付けられたアクション・イベントで、指定されたEL式を呼び出します。

、独自のEL式はプロパティのゲッターメソッドまたは本当に全部でEL式がどのように扱われるかに関して、重要ではありません引数を持つ任意のメソッドを呼び出すかどうか。

+0

BalusCは、迅速な対応のためにどうもありがとうございました。私はあなたのJSFブログを楽しんでいて、それは私を大いに助けました。あなたの答えは理にかなっています。しかし、私はまだ混乱している。 ELを使用するテクノロジー(JSF 2.xなど)は、ELがValueExpressionまたはMethodExpressionとして扱われるかどうかを決定します。だから、JSFのアクション属性のために、私はアクション=「aBean.aMethodを()」を使用する場合、およびaMethodは文字列リテラル「aBean.action」を返した場合、あなたはaBeanでアクションメソッドが呼び出されると言っていますか? EL式で私に聞こえる音は、JSFのメカニズムの前に常に最初に呼び出されます。ELに()があれば、getterを使用せず、代わりにメソッドを呼び出します。 –

+0

いいえ、それは属性ごとに決定するタグハンドラです。あなたは[例えば、「タイプ」欄をチェックし(それが扱われますか[タグのドキュメント](http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/)で見ることができます'h:commandButton'](http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/commandButton.html))。これはEL構文には何ら依存しません。 – BalusC

+0

同意すると、タグハンドラはそれを決定します。しかし、タグ・ハンドラはJSF実装から来ています。だからそれを決めるのはJSFです。私は前のコメントを修正しました。あなたに時間があるなら、あなたは精巧にできますか?ありがとう。 –

関連する問題