当前位置: 首页 > 知识库问答 >
问题:

f: ajax嵌套ui:重复

陈季
2023-03-14

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

java对象表示为这样的
IE

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

public class object1{
     List<object2> stops;
}

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

<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竞选-消息-0-停止列表,列表中的每个停止都引用了这个特定的整数标识符,这在其余的消息中是一致的。

我不知道如何通过绝对或相对ID正确引用它。它似乎只在panelGroup是同级组件时才起作用,但这当然不是我要寻找的行为。我希望重新呈现每个停止的容器,以显示列表,而不显示已删除的停止。

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

共有1个答案

东方和惬
2023-03-14

最后,如果你从列表/数组中删除一个元素,你需要重新渲染整个ui:重复,因为你不能简单地从循环中取出迭代

要重新渲染整个重复,可以执行以下操作:

<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>
 类似资料:
  • 我有2 ui:重复嵌套像这样: 这将生成具有此格式的菜单 > 子菜单1 儿子菜单2 > 儿子menu2_1 儿子menu2_2 儿子menu2_3 等... 当我点击这个子菜单时,我使用f:ajax来呈现一个面板组,其中包含所选菜单的详细信息(它显示与它们相关联的页面),问题是它只适用于父菜单1及其子菜单,但对于父菜单2,它适用于它的2个第一个子菜单,如果有第三个子菜单与“父菜单2”关联,我点击它

  • 在下面的代码中,我试图在< code >选项卡下显示所有< code >项目(对象),它们应该基于它们的类别。 类别必须相等。 编辑:如果还不清楚,请看这里。 我正在尝试遍历选项卡并将每个选项卡的名称添加到选项卡的“模板”中。 然后,我尝试遍历项目,如果项目的类别与选项卡的类别匹配,那么它将显示在选项卡下。 出于某种原因,它似乎不起作用。我做错什么了吗?< br >请原谅我和我的逻辑,过去两天一直

  • 问题内容: 我有这样的结构: 我希望能够在如下所示的主要状态下定义模板,而不必在子状态下进行管理。 我希望命名的ui视图不是其子状态,并由该状态的views对象而不是子状态的templateUrl字段填充。我怎样才能做到这一点? 问题答案: 我们可以在 一种* 状态下使用 更多 视图,请参阅: * 多个命名视图 该定义只需要使用绝对命名即可: 如此处详细说明: 视图名称-相对名称与绝对名称 在幕后

  • 本文向大家介绍AngularJS ui-router (嵌套路由)实例,包括了AngularJS ui-router (嵌套路由)实例的使用技巧和注意事项,需要的朋友参考一下 我们都知道,如果使用原生路由的话,Angular的视图是通过ng-view这个指令进行加载的。比如这样:<div ng-view></div>。一般,我们都会把这个指令放在index.html这个文件里面,然后,通过控制器来

  • 问题内容: 我正在尝试创建文件查看器,并且想嵌套子目录。我正在使用ui-router,我希望每个子目录都有其自己的URL和状态。 说我有以下结构: 我希望我的路线是: 我想递归地执行此操作,而不是为每个子目录创建一个新状态 问题答案: 我建议用 一种状态 和 一种参数 - 来做。因为应该尽快定义所有状态,以支持url路由。所有这些唯一的folderPath可能不同,也可能是动态的-在运行时中,在应

  • 问题内容: 是否可以在有条件的ui路由器中创建嵌套视图?条件已分配给用户角色。 例如,我有两种类型的用户: admin 和 user 。如果用户正在打开设置页面,则ui路由器仅添加分配给他的角色的该视图。 这是我的配置代码的示例 问题答案: 该视图将为每个用户(管理员或匿名)注入。但是我们可以管理哪个视图。最好的办法是使用 。 根据此问答: $ locationChangeSuccess和$sta