在我的JSF应用程序中,我有一个不断生成警告的JSP页面,该警告有时会呈现。在日志文件中,我可以看到这样的内容:
WARNING: getClientId should not be called while the view is being constructed.
Component-ID: j_id18
生成警告的组件如下所示:
<tr:panelCaptionGroup captionText="Jobs">
<tr:poll pollListener="#{jobBean.update}" id="poll" interval="#{msg.cfg_pollingInterval}" />
<tr:table allDetailsEnabled="true" partialTriggers="::poll ::groupFilter">
<f:facet name="detailStamp" >
<tr:table var="trg" value="#{subbean}" >
...stuff...
</tr:table>
</f:facet>
<tr:column>
<h:panelGroup>
<tr:commandLink />
</h:panelGroup>
</tr:column>
<tr:column />
</tr:table>
可能是表中轮询的问题吗?
我使用的是Trinidad 2.0.0。我已经尝试了web.xml
中的org.apache.myfaces.trinidad.CLIENT_ID_CACHING
选项,我观察了所有选项ON, OFF和DEBUG的行为。
看起来,在屏幕上创建下拉菜单时,某个地方发生了NPE。代码已经修复,警告不再出现。
我的解决方案是在备份bean结束这种状态之前以编程方式刷新任何父节点。
注意,看起来这个消息被添加到java/org/apache/myfaces/trinidad/component/UIXComponentBase.java在2010年5月的942933修订版中,以防止和NPE当clientId为空