【问题标题】:Update a composite component?更新复合组件?
【发布时间】:2012-02-18 10:14:31
【问题描述】:

如何告诉复合组件它应该更新另一个 cc?

我试图为第一个 cc 赋予一个“更新”属性,该属性被传递给一个按钮。 然后我用那个id注释了snd cc。 显然id也找到了,因为我已经可以启动页面了。

但点击按钮:没有任何反应!

输入抄送:

<composite:interface>
<composite:attribute name="update"/>
</composite:interface>

<composite:implementation>
<p:commandButton value="Create" update="#{cc.attrs.update}" action="register...">
</composite:implementation>

JSF:

<cc:myInput update=":myDataTable">

<cc:myDataTable id="myDataTable">

有人知道如何正确更新 cc 输入表单按钮中的 cc 数据表吗?

thnx

【问题讨论】:

    标签: java ajax jsf composite-component


    【解决方案1】:

    您指定了一个以: 开头的客户端 ID,因此它将相对于视图根进行解释(即,它成为“绝对”客户端 ID)。但是您似乎在视图根和数据表组件之间还有另一个NamingContainer 组件,例如&lt;h:form&gt;。它的 ID 也将在客户端 ID 中结束。

    要确定myDataTable的正确客户端ID,您需要在网络浏览器中打开页面,右键单击并查看源代码并找到xxx未知的&lt;table id="xxx:myDataTable"&gt;组件对现在。您需要在 update 中准确使用此客户端 ID:

    <cc:myInput update=":xxx:myDataTable">
    

    【讨论】:

    • 好吧,myDataTable 的内部看起来像这样:&lt;composite:implementation&gt; &lt;h:panelGroup&gt; &lt;h:form&gt; &lt;p:dataTable&gt; 我得到的源代码是带有“自动生成的 id”的东西,所以无论如何我都不能引用它们:(@987654330 @
    • (对不起,我不能在这里换行...)
    • 那么就只使用固定ID? &lt;h:form id="form"&gt; 等等。
    • 好的,我将整个 cc 包装在具有特定 ID 的 panelGroup 中。引用这个 id 我的 ":myDataTable:myPanelGroup" 有效!
    • 不客气。你也可以给 CC 中的&lt;h:form&gt; 一个固定的 ID 并引用它。
    猜你喜欢
    • 2012-04-01
    • 2012-07-26
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2016-08-01
    • 2012-12-19
    相关资源
    最近更新 更多