如何在复合中调用JSF组合:实现?

时间:2013-08-12 21:19:16

标签: jsf-2 nested composite-component

如何在其他组合的实现标记中调用JSF2组合(小部件)?

当我这样做时,我得到以下error: /resources/widgets/tileContainer.xhtml @25,45 <mywidgets:tileContainer> Tag Library supports namespace: http://java.sun.com/jsf/composite/widgets, but no tag was defined for name: tileContainer

代码段是:

<composite:interface name="tileContainer">
    <composite:attribute name="pubCategoryId" type="java.lang.Long" required="true" />
</composite:interface>

<composite:implementation>
    <div class="tileContainer">

        <ui:repeat value="#{pubController.getPubsByCategory(cc.attrs.pubCategoryId)}" var="pub">
            #{pub.title}
            <mywidgets:tileContainer title="Private">
                <mywidgets:tileSmallPictureTitle                        
                    title="Bulk Dispatch Lapse stressed with application protocols">
                </mywidgets:tileSmallPictureTitle>
            </mywidgets:tileContainer>
        </ui:repeat>

    </div>
</composite:implementation>

关于如何处理此问题的任何其他设计建议?

感谢您分享您的想法。

2 个答案:

答案 0 :(得分:1)

这被认为是Mojarra issue 2437,已在Mojarra 2.1.10(2012年7月25日发布)中修复。看起来你正在使用一个相当过时的Mojarra版本。它的currently已经在2.1.25(2.2.x甚至已经出局,但我现在不建议改用2.2,让他们先解决所有的儿童疾病。)

答案 1 :(得分:0)

好的,我将复合目录的名称空间声明从<html xmlns...标记向下移动到<composite:implementation>标记。

所以复合材料看起来像这样:

<composite:implementation xmlns:mywidgets="http://java.sun.com/jsf/composite/widgets">

否则,父组合和子组合的名称空间将错误地解析。