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

Jsf 如何在Facelet标记中使用默认生成的ID,jsf,jsf-2.2,facelets,facelet-tag,Jsf,Jsf 2.2,Facelets,Facelet Tag,我创造了一个新的世界。我希望ID返回到默认的j_idtXxx,就像您在XHTML中没有设置整个ID属性时忽略了它一样 因此,我希望将呈现为 但是,应该呈现为 如果我要在标记文件中使用,它只会在空ID属性上失败。是否有任何方式可以呈现为默认生成的ID?我想创建如下内容: <c:set var="id" value="#{empty id ? USE_DEFAULT : id}" /> 但是我不知道在use\u DEFAULT上使用什么功能,该功能由提供。当前的UIViewRoot

我创造了一个新的世界。我希望ID返回到默认的
j_idtXxx
,就像您在XHTML中没有设置整个ID属性时忽略了它一样

因此,我希望将
呈现为

但是,
应该呈现为

如果我要在标记文件中使用
,它只会在空ID属性上失败。是否有任何方式可以呈现为默认生成的ID?我想创建如下内容:

<c:set var="id" value="#{empty id ? USE_DEFAULT : id}" />


但是我不知道在
use\u DEFAULT

上使用什么功能,该功能由提供。当前的
UIViewRoot
实例在EL中作为隐式对象
{view}
可用

因此,这应该做到:

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


感谢您的及时回答。在我的例子中,这导致了一个异常:
组件ID main:j_id6已经在视图中找到了
。如果它有一个
scope=“request”
或更大的范围,并且有多个相同标记的实例,则可能发生这种情况。我删除了
,只使用了
ID=“{empty ID?view.createUniqueId():ID}”
。现在它工作了。奇怪。它默认为“无”范围(即无处存储,每次评估)。您使用的是哪个JSF impl/版本?我使用的是Mojarra 2.2.7