1

これに似た複合タグがあります:

<ui:decorate template="....">
   <ui:define name="...">
       <h:inputText value="#{value}"/>
   </ui:define>
</ui:decorate>

のようなページで使用されます。

<ns:tag value="#{some.el.expression}"/>

そのままで問題なく動作します。今度は、Java コードから「some.el.expression」にアクセスしたいと思います。component.getValueExpression("value")に似たものが必要です。うまくいかないようです.inputTextノードでそれができないと、「#{value}」が表示されますが、これは私が望むものではありません. この値にアクセスする方法がわかりませんでした。何かご意見は?

4

1 に答える 1

2

Application#evaluateExpressionGet()EL式をプログラムで評価するために使用できます。

FacesContext context = FacesContext.getCurrentInstance();
Object value = context.getApplication().evaluateExpressionGet(
    context, "#{some.el.expression}", Object.class);

WhereObject.classは、実際の戻り値の型で置き換えることができます。返されるものは、式を評価している正確な瞬間に依存することに注意してください。まだ EL スコープに含まれていないか、すでに EL スコープから削除されている可能性があります。

于 2012-08-30T20:45:58.147 に答える