簡體   English   中英

Primefaces ajax 更新不適用於內部字段<p:column>

[英]Primefaces ajax update not working for field inside <p:column>

我有一個像這樣的primefaces代碼。 選擇下拉后,如果值為'M',我想渲染一個評論textarea。

它工作正常並顯示 textarea,但在選擇“F”時,即使 renderComments 值為 false,它也不會隱藏 textarea。

我認為由於 < p: column> 標記,更新沒有正確進行。 請問這個怎么解決

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" 它可以工作。 然而,它更新了我不期望的整個表單。 如果我只指定 id,不知道有什么問題(commentsCol 評論)

我通過在p:panelGrid上放置一個id並更新它而不是列來解決了這個問題。

    <p:panelGrid id="foo">

        <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="foo" />
                </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>

嘗試更新“評論”而不是“ commentsCol”

我設法通過在元素周圍包裹<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>

你好,我需要幫助; 從 primeface 7.0 開始, p:component('panelPersonne') 不再存在; 它已棄用。

主要問題:現在每當我嘗試使用命令鏈接或單選按鈕時,ajax 都會刷新我的頁面,它們都使用 ajax 標記或更新並通過 ID 處理其他組件!

描述:他們說它被 p:resolveClientId('@id(panelPersonne)', view) 取代,但它對我不起作用:當我從 6.2 遷移到 primefaces 7.0 時,我遇到了一個新問題; 每次我使用 p:ajax 或 p:commandlink 進行更新(ajax)的任何操作時,頁面都會刷新並且不再發生該操作; 而不是在 bean 中為 exp 調用方法; 采取的行動只是對所有組件的刷新(不是從 url 重新加載,而是在頁面本身中刷新所有內容)

我所需要的只是使用 p:resolveClientId 表達式語言語法的有效示例,而我們直接通過它們的 ID 獲取組件,因為我在網上看到一些示例顯示 p:resolveClientId 但只使用 @form 或其他一些非常基本的選擇器!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM