场合
JavaServer Faces版本:2.1.6
我有一个带有两个嵌套cc的父复合组件。其中一个包含HtmlPanelGroup,它具有组件绑定。我使用该绑定以编程方式将HtmlCommandLink-Objects添加到HtmlPanelGroup。
我们打电话给一些ID:
期望
我希望以下ID链接(默认为javax.faces.SEPARATOR_CHAR):
PARENT (Composite Component, declarative)
PARENT:CHILD_FIRST (Composite Component, declarative)
PARENT:CHILD_SECOND (Component Component, declarative)
PARENT:CHILD_SECOND:GROUP (HtmlPanelGroup, declarative)
PARENT:CHILD_SECOND:GROUP:LINK_1 (HtmlCommandLink, programmatically)
问题
第一页访问时HtmlCommandLink-Object的ID错误。而不是“PARENT:CHILD_SECOND:GROUP:LINK_1”,ID仅为“CHILD_SECOND:GROUP:LINK_1”。刷新页面后,ID正确“PARENT:CHILD_SECOND:GROUP:LINK_1”。实际上,第二个复合组件中的每个组件(“CHILD_SECOND”)都缺少ID的第一部分(“PARENT”)。刷新后所有ID都正确。
解决方案
我可能会在第一次访问后自动刷新页面。但我不想。
答案 0 :(得分:-1)
浏览器解释后的ID与您的想法不一样。据我所知,它不超过3个级别。例如:
<h:form id="form">
<h:panel id="panel">
<h:panel id="panel1">
<h:label id="lab"/>
</h:panel>
<h:panel id="panel2">
</h:panel>
</h:panel>
</h:form>
然后标签的id将不是形式:panel:panel1:lab but form:panel:lab。如果你想获得id的小部件更深,那么我不知道但它不会超过3个级别。我可以告诉你如何找到身份证。 您可以只编写页面,然后在chrome或firefox上查看它,您可以在解释后看到源代码。所以你可以得到你想要的id。
祝你好运!