如何在 Facelet 标记中使用默认生成的 ID
How to use a default generated ID in a Facelet tag
我创建了一个 custom Facelet tag。我希望 ID 恢复为默认值 j_idtXxx
,就像在 XHTML 中未设置 ID 属性时您会遗漏整个 ID 属性一样。
所以,我希望 <my:tag id="fiets"/>
呈现为 <span id="fiets"/>
。
但是,<my:tag/>
应该呈现为 <span id="j_idtXxx"/>
。
如果我要在我的标记文件中使用 <h:anyTag id="#{id}"/>
,它只会因 ID 属性为空而失败。有什么方法可以呈现为默认生成的 ID?我想创建类似的东西:
<c:set var="id" value="#{empty id ? USE_DEFAULT : id}" />
但是我不知道USE_DEFAULT
用什么。
该功能由 UIViewRoot#createUniqueId()
提供。当前 UIViewRoot
实例在 EL 中可用作隐式对象 #{view}
。
所以,应该这样做:
<c:set var="id" value="#{empty id ? view.createUniqueId() : id}" />
我创建了一个 custom Facelet tag。我希望 ID 恢复为默认值 j_idtXxx
,就像在 XHTML 中未设置 ID 属性时您会遗漏整个 ID 属性一样。
所以,我希望 <my:tag id="fiets"/>
呈现为 <span id="fiets"/>
。
但是,<my:tag/>
应该呈现为 <span id="j_idtXxx"/>
。
如果我要在我的标记文件中使用 <h:anyTag id="#{id}"/>
,它只会因 ID 属性为空而失败。有什么方法可以呈现为默认生成的 ID?我想创建类似的东西:
<c:set var="id" value="#{empty id ? USE_DEFAULT : id}" />
但是我不知道USE_DEFAULT
用什么。
该功能由 UIViewRoot#createUniqueId()
提供。当前 UIViewRoot
实例在 EL 中可用作隐式对象 #{view}
。
所以,应该这样做:
<c:set var="id" value="#{empty id ? view.createUniqueId() : id}" />