从另一种形式更新面板的ajax

use*_*380 6 java ajax panel primefaces jsf-2

我这里有一些代码:

<f:view>
    <h:form id="formA">
        <p:treeTable id="tree">
            <p:ajax event="select" listener="..." update="mustRefresh" />  
            ...
        </p:treeTable>
    </h:form>
    <h:form id="formB">
        <p:panel id="mustRefresh"> ... </p:panel>

    </h:form>   
</f:view>
Run Code Online (Sandbox Code Playgroud)

当用户在treeTable(formA)上选择记录时,其详细信息将显示在formB上并准备编辑.我的麻烦是update ="mustRefresh"不起作用,它会抛出这样的异常:

javax.faces.FacesException: Cannot find component with identifier "mustRefresh" referenced from "A4578:formA:tree". 
Run Code Online (Sandbox Code Playgroud)

我尝试使用@ form,formB,:formB和:mustRefresh但它不起作用.

Ako*_*s K 23

由于mustRefresh在组件层次结构中,formB您应该引用它:

<p:ajax event="select" listener="..." update=":formB:mustRefresh" />
Run Code Online (Sandbox Code Playgroud)

了解UIComponentBase.findComponent的工作原理.

  • 如果mustRefresh不在formB中,该怎么办?在我的例子中,我不应该将mustRefresh组件放在Form元素中.我称之为`update =":mustRefresh"`,但是它无法找到并刷新元素. (2认同)

小智 14

使用update="@([id$=mustRefresh])"- 这将直接获取displayPost.没有必要将它映射到任何东西.