如何在Facelet标记中使用默认生成的ID

时间:2017-04-07 09:38:06

标签: jsf jsf-2.2 facelets facelet-tag

我创建了一个custom Facelet tag。我希望ID可以回退到默认的j_idtXxx,就像在XHTML中没有设置时遗漏整个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使用什么。

1 个答案:

答案 0 :(得分:2)

该功能由UIViewRoot#createUniqueId()提供。 EL中的当前UIViewRoot实例可用作隐式对象#{view}

所以,这应该做:

<c:set var="id" value="#{empty id ? view.createUniqueId() : id}" />