Primefaces ajax update不适用于<p:column>



我有一个这样的素数代码。选择下拉列表后,如果值为"M",则我想呈现注释文本区域。

它工作正常并显示文本区域,但在选择"F"时,即使 renderComments 值为 false,它也不会隐藏文本区域。

我认为由于 <p:>标签,更新无法正常进行。请如何解决此问题

.HTML

        <p:panelGrid>
            <p:row>
                <p:column style="width:15%">
                    <p:selectOneMenu id="gender" value="#{myBean.model.gender}">
                        <f:selectItem itemValue="M" itemLabel="Male" />
                        <f:selectItem itemValue="F" itemLabel="Female" />
                        <p:ajax event="change" listener="#{myBean.genderListener}" process="@this" update="commentsCol comments" />
                    </p:selectOneMenu>
                </p:column>
                <p:column id="commentsCol" style="width:50%">
                    <p:inputTextarea id="comments" cols="100" rows="2" value="#{myBean.model.comments}" rendered="#{myBean.renderComments}" />
                </p:column>
            </p:row>

        </p:panelGrid>

/**
 * Event for gender.
 */
public void genderListener() {
    if ("M".equalsIgnoreCase(model.getGender())) {
        renderComments = true;
    }
    else {
        renderComments = false;
    }
}           

更新

如果我使用 update="@form"它可以工作。但是,它更新了我不希望的整个表单。不确定如果我只指定 ids (commentsCol comments)

我设法通过在元素周围包裹一个 <h:panelGroup> 并单独使用 panelGroup id 进行更新来解决此问题。

等效的完整代码是这样的

    <p:panelGrid>
        <p:row>
            <p:column style="width:15%">
                <p:selectOneMenu id="gender" value="#{myBean.model.gender}">
                    <f:selectItem itemValue="M" itemLabel="Male" />
                    <f:selectItem itemValue="F" itemLabel="Female" />
                    <p:ajax event="change" listener="#{myBean.genderListener}" process="@this" update="commentsPanel" />
                </p:selectOneMenu>
            </p:column>
            <p:column style="width:50%">
                <h:panelGroup id="commentsPanel">               
                    <p:inputTextarea id="comments" cols="100" rows="2" value="#{myBean.model.comments}" rendered="#{myBean.renderComments}" />
                </h:panelGroup>
            </p:column>
        </p:row>
    </p:panelGrid>

尝试更新"注释"而不是"注释Col"

最新更新