【问题标题】:primefaces ajax update of panel from another form [duplicate]来自另一种形式的面板的primefaces ajax更新[重复]
【发布时间】:2012-12-23 01:19:41
【问题描述】:

我这里有一些代码:

<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>

当用户在 treeTable(formA) 上选择一条记录时,它的详细信息将显示在 formB 上并准备好进行编辑。我的问题是 update="mustRefresh" 不起作用,它会抛出这样的异常:

javax.faces.FacesException: Cannot find component with identifier "mustRefresh" referenced from "A4578:formA:tree". 

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

【问题讨论】:

    标签: java ajax jsf-2 primefaces panel


    【解决方案1】:

    由于组件层次结构中的mustRefreshformB 内部,因此您应该使用以下方式引用它:

    <p:ajax event="select" listener="..." update=":formB:mustRefresh" />
    

    了解UIComponentBase.findComponent 的工作原理。

    【讨论】:

    • 如果 mustRefresh 不在 formB 内怎么办?就我而言,我不应该将 mustRefresh 组件放在 Form 元素中。我称它为update=":mustRefresh",但它无法找到并刷新元素。
    【解决方案2】:

    使用update="@([id$=mustRefresh])" -- 这将直接获取 displayPost。无需将其映射到任何东西。

    【讨论】:

    • 这是最简单的解决方案
    • 这对我来说效果更好,谢谢!
    • 这个真的很简单方便...
    • 最佳更新方式,@(.ID_ELEMENT) 实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多