sch*_*olt 3 jsf facelets taglib jsf-2.2
我正在将旧项目从 JSF 1.1 升级到 JSF 2.2。具体来说,我将 JSF 实现从 MyFaces 1.1 升级到 MyFaces 2.2.12,用 Facelets 替换 JSP 并升级/替换过时的标签库。我主要使用从 JSF 1.2 迁移到 JSF 2.0作为指南。
该项目使用了一些在其 JSP 页面中htmLib
使用命名空间调用的标记库http://jsftutorials.net/htmLib
。我再也找不到关于这个标签库的任何文档,无论是在 jsftutorials 网页还是其他地方,但显然它被用来包含像JSP 页面<div>
或<table>
在 JSP 页面中的纯 HTML 标签。
由于现在可以在带有 JSF2 的 XML Facelets 中使用纯 HTML 标记,因此我现在正在从htmLib
taglib 中删除所有出现的标记,<htm:div>...</htm:div>
例如<div>...</div>
.
但是,从使用的一些标签htmLib
包含render
用于条件渲染的属性,如下所示:
<htmLib:h4 render="someCondition">
...
</htmLib:h4>
Run Code Online (Sandbox Code Playgroud)
因为纯 HTML 标签没有render
用于此目的的属性,所以我正在寻找一种有条件地呈现纯 HTML 标签的替代方法,并在 SO 上偶然发现了这个答案:如何有条件地呈现像 <div> 这样的纯 HTML 元素?
所以,我的想法是用类似的东西替换上面的结构
<ui:fragment render="someCondition">
<h4>
...
</h4>
</ui:fragment>
Run Code Online (Sandbox Code Playgroud)
我的问题:
<ui:fragment>
带有render
属性的标签内是否是有条件地呈现 HTML 标签的推荐方式,还是这种方法仅对链接问题中的情况有效并推荐? <ui:fragment>
包装方法是否有效,无论其中包含哪种纯 HTML?<ui:fragment>
嵌套条件渲染块吗?有没有限制在。甚至不是包装ui:fragment
。
基本上:
ui:fragment
.span
元素,请使用h:panelGroup
.div
元素,请使用h:panelGroup layout="block"
.你里面的 HTML 不是问题。JSF 作为服务器端框架,在服务器中执行所有 HTML 构建/渲染工作,因此 JSF/facelet 标记在发送响应之前被转换为 HTML。您在其中使用的所有纯 HTML 都将保留为 HTML。
但是,从 1.x 迁移时,请注意在 UI 组件中使用标签处理程序。标记处理程序 ( ui:include
, c:if
, c:forEach
)在UI 组件(通常包含rendered
子句)之前评估。这一直是 JSF 2 中冲突的根源。
归档时间: |
|
查看次数: |
2807 次 |
最近记录: |