f: 嵌套ui中的ajax:重复



当按下按钮删除对象子列表中的一个元素时,我正试图使用ajax重新发送另一个对象列表中包含的对象列表的容器。但是我找不到子列表对象的父容器。

java对象是这样表示的
IE

public class Advertisements{
      List<object1> messages;
//getters setters etc.
}
public class object1{
     List<object2> stops;
}

现在,我尝试将一个删除按钮与每个停止(第二个嵌套对象列表)关联起来,并使用f:ajaxrender重新渲染这些停止的容器。

IE

<h:form id="campaign" >
   <ui:repeat id="messages" var="message" value="#{Advertisements.active.messages}" >
       <h:panelGroup id="stopList"  binding="#{waga}">
            <ui:repeat id="temp" var="stop" value="#{message.stops}" >
                <div class="col-sm-2">
                    <h:outputLabel value="#{stop.name}"/>
                </div>
                <div class="col-sm-1">
                    <h:commandLink action="#{Advertisements.delete(stop)}" class="">
                        <i class="glyphicon glyphicon-remove"></i>
                        <f:ajax render=":#{waga.clientId}"/>
                    </h:commandLink>                
                </div>
            </ui:repeat>
        </h:panelGroup>
    </ui:repeat>
</h:form>

现在,我尝试了几种不同的呈现id排列,但我不明白为什么我不能在面板组上执行ajax请求。

使用此时

<h:panelGroup id="stopList"  binding="#{waga}">
#{waga.clientId}

我已经能够检查该值,并且它为每个按钮的ajax呈现唯一地映射到正确的容器id IE

对于id campaign-messages-0-stopList列表中的每个站点都引用了这个特定的整数标识符,这在其余消息中是一致的。

我不知道如何通过绝对id或相对id正确引用它。它似乎只在panelGroup是兄弟组件时才起作用,但当然这不是我想要的行为。我想重新呈现每个站点的容器,现在显示没有删除站点的列表。

有人知道为什么绝对ID找不到组件,或者我可能做错了什么吗?

afaik,如果从列表/数组中删除一个元素,则需要重新呈现整个ui:repeat,因为不能简单地从循环中取出迭代。

为了重新渲染整个重复,你可以这样做:

<h:form id="campaign">
    <ui:repeat id="messages" varStatus="messagesVarStatus" var="message" value="#{Advertisements.active.messages}" >
        <h:panelGroup id="stopList">
            <ui:repeat id="temp" var="stop" value="#{message.stops}" >
                <div class="col-sm-2">
                    <h:outputLabel value="#{stop.name}"/>
                </div>
                <div class="col-sm-1">
                    <h:commandLink action="#{Advertisements.delete(stop)}" class="">
                        <i class="glyphicon glyphicon-remove"></i>
                        <f:ajax render="campaign:messages:#{messagesVarStatus.index}:stopList"/>
                    </h:commandLink>                
                </div>
            </ui:repeat>
         </h:panelGroup>
    </ui:repeat>
</h:form>

相关内容

  • 没有找到相关文章

最新更新