【发布时间】:2017-10-01 10:21:25
【问题描述】:
我正在将一个旧项目从 JSF 1.1 升级到 JSF 2.2。具体来说,我正在将 JSF 实现从 MyFaces 1.1 升级到 MyFaces 2.2.12,用 Facelets 替换 JSP 并升级/替换过时的标记库。我主要使用Migrating from JSF 1.2 to JSF 2.0 作为指导。
该项目在其 JSP 页面中使用了一些名为 htmLib 的标记库,其命名空间为 http://jsftutorials.net/htmLib。我在 jsftutorials 网页和其他地方都找不到关于这个标签库的任何文档,但显然它被用来在 JSP 页面中包含纯 HTML 标签,如 <div> 或 <table>。
由于现在可以在带有 JSF2 的 XML Facelets 中使用纯 HTML 标签,我现在正在从 htmLib 标签库中删除所有出现的标签,例如 <htm:div>...</htm:div>,并将它们替换为纯 HTML 标签,例如 <div>...</div>。
但是,htmLib 中使用的一些标签包含用于条件渲染的render 属性,如下所示:
<htmLib:h4 render="someCondition">
...
</htmLib:h4>
因为纯 HTML 标记没有为此目的的 render 属性,所以我正在寻找一种替代方法来有条件地呈现纯 HTML 标记,并偶然发现了这个答案:How to conditionally render plain HTML elements like <div>s?
所以,我的想法是用类似的东西替换上面的结构
<ui:fragment render="someCondition">
<h4>
...
</h4>
</ui:fragment>
我的问题:
- 正在使用
render将 HTML 标记包装在<ui:fragment>标记中 属性推荐的方式来有条件地呈现 HTML 标签,或者 这种方法是否仅适用于链接问题中的案例并推荐使用? - 还有其他方法可以有条件地在 Facelets 中呈现纯 HTML 标记吗?
-
<ui:fragment>包装方法是否有效,无论其中包含何种纯 HTML? - 可以嵌套有条件渲染的
<ui:fragment>块吗?
【问题讨论】:
标签: jsf jsf-2.2 facelets taglib