【问题标题】:JSF ui:repeat in ui:repeat with dynamically assigned var-valueJSF ui:repeat in ui:repeat with dynamic assignment var-value
【发布时间】:2023-04-07 20:42:01
【问题描述】:

我们为我们的项目创建了一个 JSF 表组件,它使用 <ui:repeat> 创建表。在表中添加表的新要求(第二个表位于一行中并且是可折叠的)给我们带来了麻烦,因为<ui:repeat var="row" ...> 是在表组件内静态设置的,而内表使用外部的行变量遍历列表时的表。现在我想要创建的是这样的:

<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>

...但遗憾的是,这不起作用。我用&lt;c:forEach&gt; 试过了,但结果是一样的,列的值是空的,没有数据显示。有没有办法动态设置&lt;ui:repeat&gt;的var属性?

【问题讨论】:

    标签: jsf parameter-passing repeat composite-component uirepeat


    【解决方案1】:

    经过进一步研究,我偶然发现了这个页面 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 的附件中有进一步的修改。遗憾的是,UIRepeatclass 不能简单地扩展,因为在私有方法中使用了var 属性,所以我现在有一个&lt;myfw:repeat&gt;,它利用了页面上修补的UIRepeat 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2011-04-30
      • 2011-04-17
      • 2014-02-04
      相关资源
      最近更新 更多