【问题标题】:Composite component parameter does not evaluate when it is a ui:repeat var attribute复合组件参数在为 ui:repeat var 属性时不计算
【发布时间】:2011-12-24 01:42:50
【问题描述】:

我有一个复合组件,它采用特定对象类型作为其 value 属性。它看起来像这样:

<cc:interface>
    <cc:attribute name="value" 
                  type="com.myapp.Tally" 
                  required="true" 
</cc:interface>

该组件仅生成一个带有来自对象的数据元素的 h:panelGrid

在我尝试在 ui:repeat 结构中使用它之前,我从来没有遇到过这样的问题:

<ui:repeat value="#{myApp.tallyList}" var="tally">    
  <p>
    <qc:tallySummaryH value="#{tally}" />
  </p>
</ui:repeat>

当这个页面被请求时,它会抛出一个异常:

javax.faces.view.facelets.TagException: /table.xhtml @86,66 <qc:tallySummaryH> The following attribute(s) are required, but no values have been supplied for them: value. 
    at com.sun.faces.facelets.tag.composite.InterfaceHandler.validateComponent(InterfaceHandler.java:233)
    at com.sun.faces.facelets.tag.composite.InterfaceHandler.apply(InterfaceHandler.java:125)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
    at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
    at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
    at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
    at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyCompositeComponent(CompositeComponentTagHandler.java:349)

ui:repeat 循环内对 #{tally} 的其他引用没有任何问题。它们按预期运行。这是 Mojarra 错误还是我不理解的 JSF 规范中的某些内容?

这是在 GlassFish 3.1.1 中的 Mojarra 2.1.0 (FCS 2.1.0-b11) 上

【问题讨论】:

  • 从来没有在 Mojarra 2.1.0 上尝试过这个,但它在 Mojarra 2.1.3 上对我来说在本地运行良好,并且在使用 Mojarra 2.1.1 的生产环境中运行良好(m4n.nl,那个顶部10 列表由 ui:repeat 生成,并且带有 popup 的星分是综合的)。你确定你没有打错 value 属性吗?
  • 这是从我的应用程序中剪切和粘贴(然后是一些删除)。该属性在 Netbeans 编辑器中自动完成。但是有趣的是,我认为我拥有最新的 Mojarra 2.1.3。让我看看我是否可以升级并再试一次。
  • @BalusC 原来我的家庭系统上有 2.1.3。我的笔记本电脑已经过时了。它现在似乎正在工作。不幸的是,我没有保留失败的代码,但我会看看我是否可以让它在我的笔记本电脑上再次失败。
  • @BalusC 已确认。 2.1.0 失败 2.1.3 有效。如果您想重新发布作为答案,我会标记它。

标签: jsf-2 facelets composite-component mojarra


【解决方案1】:

这与 Mojarra 2.1.1 中修复的错误有关。考虑upgrading。我相信这(直接)是访问提示修复的结果,如 this overview 中提到的 Mojarra 2.1.1 中修复的问题。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2016-04-12
    • 2019-12-13
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多