JSF:ui:include不能与ui:define一起使用

时间:2016-10-07 01:16:52

标签: jsf jsf-2 jsf-2.2

我有一组edit.xhtml页面,每个页面都有一个相关的托管bean manager,一个公共的定义子集,以及不同定义的子集。我想封装公共定义,但它失败了(manager ui:param没有被传入):

来自典型的edit.xtml

<ui:composition template="/template.xhtml">

        <ui:include src="/include/define_common_edit.xhtml">
            <ui:param name="manager" value="#{quantityManager}"/>
        </ui:include>

<ui:define name="body">
   // specific part

define_common_edit.xhtml的位置:

<ui:composition 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"        
    xmlns:util="http://xmlns.jcp.org/jsf/composite/util">

    <ui:define name="htmltitle">
        <util:edit_htmltitle manager="#{manager}"/>
    </ui:define>

    <ui:define name="title">
        <util:edit_title manager="#{manager}"/>
    </ui:define>

    <ui:define name="actions">
        <util:edit_actions manager="#{manager}"/>
    </ui:define>

</ui:composition>   

问:在这种情况下,为什么不ui:include ui:define处理ui:include(即为什么ui:define&#34;先工作&#34;之前{ {1}}被解释)?

可接受的答案不会简单地解释ui:includeui:define如何运作,我已经知道了。答案必须是JSF规范。或类似的权威描述(我已经检查了JSF规范和Java EE教程,但还没有找到涵盖上述情况的确切描述。)

建议我如何以其他方式封装上面提到ui:define元素的非变量组,以促进DRY编码。

0 个答案:

没有答案