如何更新从其他复合材料部件复合材料部件的形式?(How to update a composite

2019-10-20 22:24发布

我有问题要更新的外在形式。 为了更清楚,我有一个主要形式,其包括2个不同的复合材料部件,让呼叫include1和include2。 我想更新的页面是从include1搜索后include2被更新。

这是怎么被列入2页。

<ui:define name="include1">
    <ui:param name="mbean" value="#{currentBean}" />
    <libcomp:include1 />
</ui:define>

<ui:define  name="include2">
    <ui:param name="mbean" value="#{currentBean}" />
    <libcomp:include2>
</ui:define>

现在,在include1我有尝试更新内部include2形式按钮

update="include2Form"

而在include2我有

<cc:implementation>
    <h:form 
        id="include2Form">

当我尝试加载网页,我总是得到一个错误500说,“include2Form”一直没有找到!

我尝试了一些研究来这里之前,但没有帮助我,我试图形式转变到一个div,试图通过参数,面板,形式prependId =假等通ID ...

使用Firebug我发现JSF或Primefaces是增加一个随机字符串到我的表格/组件ID为...

ID = “j_idt99:include2Form:myTable的”

我认为这是我的问题的原因,我试图寻找周围的工作。

谁能帮帮我好吗???

Answer 1:

首先,在你的ID附加字符串直接来自弗罗姆JSF,无关PrimeFaces,因为复合组件本身就是一个UINamingContainer 。 这是预期behavoir,甚至是必要的,因为否则你会在重复的ID冲突,最终会使用相同的CC多次在同一个视图时。

在我看来,它是坏的设计有一个复合组件内部的形式在所有。 为了提高复用性刚刚摆脱这种形式,并与工作processpartialSubmit ,也许f:subView等。

除此之外,你应该重新考虑你的设计。 一个复合组件必须更新某事物点 在组件可能是一个指示,一个组合元素是不加掩饰你的需求提供了完美的方法。

但是,如果你真的更新的复合材料部件视图的某些部分,只是通过什么来通过一个复合属性,你的CC更新的ID,让CC不关心什么,在哪里更新

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


文章来源: How to update a composite component form from another composite component?