我不知道我是愚蠢还是我得到的东西完全错了。我现在试着用ajax在一个Form中渲染一个特定的panelGrid。我尝试了不同的东西来给ajax渲染id,但总是失败:
f:ajax包含未知ID' idxx' - 无法在组件xxx
的上下文中找到它当我检查我的html代码时,它正是我的panelGrid所拥有的id。所以我想知道为什么会这样。
这是我的jsf代码:
<h:form id="id" rendered="#{classX.isSearchResultFound()" >
<h:panelGrid id="someotherGrid" rendered="#{classX.searchResultDetails > 0}">
...
</h:panelGrid>
<div id="resultWrapper>
<h:dataTable>
<h:panelGrid id="resultGrid">
<h:column>
<h:commandButton styleClass="additionalAttributesClickTarget">
<f:ajax execute="@this" render="#{component.parent.clientId}" listener="#{classX.toggleAdditionalInfos(searchResultsInList)}" onevent="onToggleResult" />
</h:commandButton>
</h:column>
</h:panelGrid>
</h:dataTable>
</div>
</h:form>
所以我基本上想要在表中呈现一行,它再次包含一些嵌套的东西。当我查看服务器日志时,错误显示完整表单中panelgrid的id,所以:
formid-tableid-0-resultGrid
我不明白为什么它显然在那里并以相同的形式找不到它?也许我监督一些事情,这是一个愚蠢的问题,但如果有人能解释我的错误或者这个概念是错误的,我会很高兴。
答案 0 :(得分:0)
我知道做了一个解决方法并在服务器上设置了id。
partialViewContext.getRenderIds().add(renderId);
当我这样做时,添加完全相同的id,他实际上做了他应该做的事情并呈现部分。所以当我将它添加到f:ajax中的render属性时,才会找到id。似乎这是因为它从未修复过的原因: