首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF页面中的EL计算不是连续的

JSF页面中的EL计算不是连续的
EN

Stack Overflow用户
提问于 2013-04-05 16:21:59
回答 3查看 974关注 0票数 0

我在AJAX上加载了一个带有ui:composition标签的XHTML。我正在使用XHTML来加载这个jQuery的URL。在加载的页面中,我有一个EL表达式,之后我还包括了另一个源,它有更多的EL表达式。通常,包含的源的EL表达式的求值时间早于它之前出现的EL表达式。

Some.xhtml

代码语言:javascript
复制
<ui:composition ...
    #{relationshipAction.followMember(param['relateToProfile'])}
    <ui:include src="someOther.xhtml">
        <ui:param name="profileUri" value="#{param['relateToProfile']}" />
        <ui:param name="qualifier" value="#{param['qualifier']}" />
        <ui:param name="cellStyleClass" value="#{param['cellStyle']}" />
    </ui:include>

在这里,我希望在包含的someOther.xhtml中,#{relationshipAction.followMember(param['relateToProfile'])}在任何EL之前被计算。但首先评估的总是someOther.xhtml中的ELs。

你知道会出什么问题吗?

EN

回答 3

Stack Overflow用户

发布于 2013-04-05 18:55:34

规范并没有说EL表达式是按文本顺序计算的。组件可以在其选择的JSF生命周期的任何阶段对EL表达式进行计算。它也可以仅在特定情况下进行评估,甚至可以多次评估。

您不应该假定任何特定的顺序,除非在极少数情况下规范实际定义了它。在您的例子中,JSF2.2的viewAction组件或preRenderView事件可能更合适。我认为,BalusC explains它们的用法非常易读。

票数 1
EN

Stack Overflow用户

发布于 2013-04-05 21:05:25

You should stop doing business logic in getter methods

改为使用bean的(Post)构造函数或(Action)侦听器方法。Bean属性必须返回已经准备好的值。我昨天回答了一个问题,在这个问题中,OP犯了同样的概念错误。你可能会发现它也很有帮助:Bean methods execution precedence in JSF

票数 1
EN

Stack Overflow用户

发布于 2013-04-05 17:58:21

您需要知道的一件非常重要的事情是

代码语言:javascript
复制
<ui:include> is evaluated during view build time, not during view render time

因此,在呈现包含#{relationshipAction.followMember(param['relateToProfile'])}的视图之前,会对<ui:include>进行评估。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15829114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档