防止<ui:repeat>插入生成的html中</ui:repeat>

时间:2014-08-21 18:44:23

标签: jsf jsf-2 uirepeat

我试图将JSF2.2与bootstrap 3.2.0组件结合使用,并在尝试使用带有动态生成标签列表的按钮组时遇到困难。我将问题追溯到ui:重复标记包含在生成的html中,从而阻止了引导程序的正确CSS样式。

xhtml代码是:

<div class="btn-group">
 <ui:repeat var="role" value="#{editUserView.allRoles}">
    <button class="btn btn-success" type="button">#{role.name}</button>
 </ui:repeat>
</div>

和输出html是这样的:

<div class="btn-group">
 <ui:repeat><button class="btn btn-success" type="button">Label1</button></ui:repeat>
 <ui:repeat><button class="btn btn-success" type="button">Label2</button></ui:repeat>
 <ui:repeat><button class="btn btn-success" type="button">Label3</button></ui:repeat>
 <ui:repeat><button class="btn btn-success" type="button">Label4</button></ui:repeat>
 <ui:repeat><button class="btn btn-success" type="button">Label5</button></ui:repeat>
</div>

有没有办法阻止xmlns中的JSF标记:ui =&#34; http://xmlns.jcp.org/jsf/facelets命名空间在生成的html中打印而不必编写自定义组件?< / p>

更新 只是出于好奇,按钮显示为普通按钮(它们之间有间距),而不是组合按钮所需的所有样式。

1 个答案:

答案 0 :(得分:1)

这被认为是Mojarra issue 2900,已在2.2.2中修订。它目前是already,位于2.2.8。因此,只需将Mojarra升级到最新版本即可。

也就是说,<ui:repeat> 不是一个标记处理程序,而是一个真正的UI组件。我修正了你的问题标题。 <c:forEach>是一个真正的标签处理程序。另请参阅JSTL in JSF2 Facelets... makes sense?了解差异。