找不到Jsf2 ajax渲染ID

时间:2012-05-21 09:05:00

标签: ajax jsf-2 render

为什么我得到“包含未知id':commentTextArea' - 无法在组件commentLink的上下文中找到它”错误?

majorra 2.1.7

我如何渲染commentTextArea。

<ui:repeat var="parentComment" value="#{commentTree.parentCommentsWrapper}"> ....
                          <h:form>

                            <h:commandLink id="commentLink" value="comment"
                                style="height:20px;width:20px;padding: 0; margin: 0;"
                                action="#{parentComment.changeEditable}">
                                **<f:ajax render=":commentTextArea"></f:ajax>**
                            </h:commandLink>

                            </h:form>        <h:panelGroup id="commentTextArea">
                                <br />
                                <h:panelGroup rendered="#{parentComment.editable}">
                                    <h:form >
                                    <h:inputTextarea rows="2" cols="20"
                                        value="#{commentTree.newCommentText}" 
                                        style="font-family:Arial,Helvetica;font-size:12px;width:365px;margin-right: 4px;margin-left: -1px;">
                                    </h:inputTextarea>
                                    <h:commandButton id="newCommentButton" value="+"
                                        style="height:20px;width:20px;padding: 0; margin: 0;"
                                        action="#{commentTree.saveChildComment(parentComment.comment)}" >
                                    </h:commandButton>
                                    </h:form>
                                </h:panelGroup>
                            </h:panelGroup>
</ui:repeat>

1 个答案:

答案 0 :(得分:0)

id :commentTextArea是绝对id并且相对于视图根。但是,ui:repeat是一个NamingContainer并且&#34;包装&#34;你的commentTextArea。 (检查浏览器中的html源以查看生成的id)

一个简单的解决方案是在你的“ui:repeat&#39;中只使用一个表单。然后是

的相对id
<f:ajax render="commentTextArea">

(没有:)会起作用。