java - 迭代 <f :verbatim> within <ui:repeat>

标签 java jsf jsf-2 facelets

我有一个@ViewScoped bean List<String>包含纯 HTML。我想迭代这个列表并输出纯 html:

<c:forEach items="#{bean.list}" var="html">
  <f:verbatim>#{html}</f:verbatim>
</c:forEach>

上面的代码片段运行良好,但是当刷新页面时,bean 成本运行器会被调用。此问题/错误已知:JSTL c:forEach causes @ViewScoped bean to invoke @PostConstruct on every request

所以建议替换 <c:forEach><ui:repeat> .

<ui:repeat value="#{bean.list}" var="html">
  <f:verbatim>#{html}</f:verbatim>
</ui:repeat>

但这行不通。我有一个空白页。我试过<h:dataTable> , <a4j:repeat><rich:dataTable>但无事可做。

有什么解决办法吗?

最佳答案

使用<h:outputText escape="false">相反。

<ui:repeat value="#{bean.list}" var="html">
    <h:outputText value="#{html}" escape="false" />
</ui:repeat>

<f:verbatim>是一个旧的面向 JSP 的标签,旨在能够在 JSF 1.0/1.1 中的 JSF 组件中嵌入纯 HTML。如果没有它,所有纯 HTML 都将在 JSF 组件树之前呈现。这种不直观的行为在 JSF 1.2 中得到了修复,这使得标签变得多余。在 Facelets 中,它也是多余的,在 Facelets 2.0(对于 JSF 2.0)中,它甚至被弃用。另请参阅 tag documentation 的介绍性文字。不要使用它。如果您想呈现未转义的 HTML,请使用 <h:outputText escape="false">如上面示例中所建议的。如果您想有条件地渲染内联 HTML 片段,请使用 <h:panelGroup><ui:fragment>相反。

关于java - 迭代 <f :verbatim> within <ui:repeat>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613117/

相关文章:

Java PECS 无法添加到消费者

java - 使用额外的局部变量从方法中引用类变量

java - 具有 3x3 显示的二维数组

javascript - 如何使用 <a4j :jsFunction><a4j:actionparam>

java - jsf 在表单重新渲染后焦点输入文本字段,值 onblur

java - JSF持久性文件问题

javascript - OrientDB javascript函数返回错误400

jsf - 如何从托管bean中获取消息捆绑字符串?

java - ICEFaces inputFile 获取文件内容而不上传

javascript - 使用 Javascript 启用/禁用 primefaces 的 SelectOneMenu