如何在 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}" />