ajax如果包含在数据表中,则无法在dataTable中找到id

时间:2015-03-19 09:17:14

标签: ajax jsf

我不知道我是愚蠢还是我得到的东西完全错了。我现在试着用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

我不明白为什么它显然在那里并以相同的形式找不到它?也许我监督一些事情,这是一个愚蠢的问题,但如果有人能解释我的错误或者这个概念是错误的,我会很高兴。

1 个答案:

答案 0 :(得分:0)

我知道做了一个解决方法并在服务器上设置了id。

partialViewContext.getRenderIds().add(renderId);

当我这样做时,添加完全相同的id,他实际上做了他应该做的事情并呈现部分。所以当我将它添加到f:ajax中的render属性时,才会找到id。似乎这是因为它从未修复过的原因:

https://java.net/jira/browse/JAVASERVERFACES-1834