Jsf 如何在Facelet标记中使用默认生成的ID
我创造了一个新的世界。我希望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
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