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

JSF ui:repeat-in-ui:repeat动态分配var值

韩峰
2023-03-14

我们为我们的项目创建了一个JSF表组件,它使用

<div>
   <myfw:mytable dataModel="#{bean.user}" varName="user" ...>
      <myfw:mycolumn value="#{user.name}"/>
      <myfw:myexpendablecolumn>
         <myfw:mytable dataModel="#{bean.acl}" varName="acl" ...>
            <myfw:mycolumn value="#{acl.name}"/>    
         </myfw:mytable>
      </myfw:myexpendablecolumn>
   </myfw:mytable>
</div>

在表组件中,应设置var属性。。。

<composite:interface>
...
    <composite:attribute name="varName" required="false"
        type="java.lang.String" default="row" />
</composite:interface>

<composite:implementation>
...

        <ui:repeat var="#{varName}" value="#{cc.attrs.dataModel.wrappedData}"
            varStatus="loop">
            <div class="floating_table_row">
                              <composite:insertChildren />  
            </div>
        </ui:repeat>
</composite:implementation>

...但可悲的是,这行不通。我用试过了


共有1个答案

夔桐
2023-03-14

经过进一步研究,我无意中发现了这一页https://java.net/jira/browse/FACELETS-372其中修改UIRepeat类,特别是getVar方法,以访问ValueExpression,而不是

public String getVar() {
    return this.var;
}

... 方法如下所示:

public String getVar() {
    if (this.var != null) {
        return this.var;
    }
    ValueExpression ve = this.getValueExpression("var");
    if (ve != null) {
        return (String) ve.getValue(getFacesContext().getELContext());
    }
    return null;
}

随附的文件中有来自的进一步修改https://java.net/jira/browse/FACELETS-372.遗憾的是,UIRepeat类不能简单地扩展,因为在私有方法中使用了var属性,所以我现在有了一个

 类似资料:
  • 动态内存分配 我们之前在 C/C++ 语言等中使用过 malloc/free 等动态内存分配方法,与在编译期就已完成的静态内存分配相比,动态内存分配可以根据程序运行时状态修改内存申请的时机及大小,显得更为灵活,但是这是需要操作系统的支持的,同时也会带来一些开销。 我们的内核中也需要动态内存分配。典型的应用场景有: Box<T> ,你可以理解为它和 malloc 有着相同的功能; 引用计数 Rc<T

  • 问题内容: 我正在尝试从对象数组生成一组复选框。我的目标是使复选框动态地将其ng模型映射到将要提交到数组中的新对象的属性。 我的想法是 在此JSFiddle上可以看到,这不起作用: http://jsfiddle.net/GreenGeorge/NKjXB/2/ 有人可以帮忙吗? 问题答案: 这应该给您想要的结果: 这是工作正常的小伙伴:http ://plnkr.co/edit/ALHQtkji

  • 我试图动态地获取给定数量的资源,但我无法理解语法。在资源集动态分配中,每个单元由其所属的资源集的名称表示。在图中,查封块将查封集合“resourcePool”中的3个资源。 我需要为每一个特工抓取特定数量的资源。然后我尝试创建资源池对象的ArrayList,并将其传递到动态分配中,但由于类型不匹配,因此无法工作。 例如,假设我有一个需要4个资源的代理,所以需要的表达式是:{resourcePool

  • 在V9.0.0版本之前为下列对象分配内存采用动态的方式,在之后的版本才允许应用程序开发者自己静态的分配内存; 任务 软件定时器 队列 事件组 二值信号量 计数信号量 递归信号量 互斥量 当然,具体使用静态分配还是动态分配由开发者自己决定。 动态分配 动态分配的好处在于使用灵活简单、同时潜在的可以降低内存占用。 更少的函数参数 内存分配使用RTOS提供的API自动分配 应用程序开发者不需要自己去考虑

  • 检查变量的内容是否匹配列表中的某项。 if Var in MatchList if Var not in MatchList if Var contains MatchList if Var not contains MatchList 参数 Var 需要被检查的 变量 名称. 对于 "in" 运算符, 需要准确匹配列表中的某项. 对于 "contains" 运算符, 会更容易形成匹配: 只要列

  • 我正在学习C。我有一个程序,可以动态创建和填充两个矩阵X和Y,使用随机数使用rand(),如下所示 当我运行这个程序并给出2作为我的矩阵的大小时,我看到“分离故障”是错误。请注意,我们的想法是用双精度类型的随机元素填充两个矩阵。如果上面的代码是正确的,请告诉我。 更正:编辑1 以上功能现在正常工作。需要解释x=(double**)malloc(m*sizeof(double*));并且x[i]=(