【问题标题】:"rendered" attribute in "ui:fragment"“ui:fragment”中的“rendered”属性
【发布时间】:2017-09-26 17:11:07
【问题描述】:

我想使用ui:fragment 中的rendered 属性在我的JSF 2.2 facelet 中有条件地呈现span 元素。 JSF 2.2 documentation of ui:fragmentrendered 列为允许的属性。但是,我使用 MyFaces 2.2.12 作为 JSF 实现,而 MyFaces 2.2 documentation of ui:fragment 确实 notrendered 列为有效属性。

无论如何,我尝试使用rendered,它确实有效。但是,我的 IDE - IntelliJ - 正确地将 rendered 属性突出显示为错误,并告诉我在 ui:fragment 元素中不允许这样做。

我在 ui:fragment rendered attribute not working after upgrading Facelets to JSF 2 中看到了一个文档错误,其中 rendered falsly 没有在 JSF 2.0 文档中列出,但该响应没有说明 JSF 2.2 或 MyFaces 2.2(可能是因为它的日期早于JSF 2.2 的发布)。

MyFaces 文档中缺少的rendered 属性也只是一个错误吗?

由于ui:fragment 元素在单个Facelets 文件中多次出现,这些“错误”错误使得查找真正错误变得非常麻烦。如果确实只是文档中的一个错误,那么针对此问题的推荐解决方案是什么?

【问题讨论】:

  • 自从我开始使用 JSF 2(现在是 5 年前)以来,我一直面临这种情况。该属性绝对有效,但 IDE 不考虑它(Intellij 或 Eclipse 也不考虑)。似乎是由 IDE 解析器移植到 2.1 和 2.2 的文档错误。该属性肯定存在于 2.1 文档中:stackoverflow.com/questions/3713468/… MyFaces 中不知道。
  • @XtremeBiker 感谢您的评论。好的,那我就继续使用rendered属性。我有点担心这个文档错误在 Mojarra 文档中得到了修复(从 2.1 版开始?),但在 MyFaces 2.2 文档中没有。
  • 2013 年 3 月的 JSF 2.2 规范中的勘误表中有一行关于此问题。链接是 download.oracle.com/otndocs/jcp/jsf-2_2-fr-eval-spec/index.html,它位于 pdf 文档 (C114) 的第 406 页中:Add "rendered" attribute to VDL docs for ui:component and ui:fragment. .所以 MyFaces 似乎也没有正确更新这部分。

标签: jsf jsf-2 myfaces


【解决方案1】:

rendered 是 JSF 2.0、2.1、2.2 中 ui:fragmentui:component 中的有效属性。见JSF 2.2 View Declaration Language

某些 IDE 不建议在自动完成(内容助手)模式下使用此属性,并将其验证为“未知属性”。发生这种情况是因为 JSF 2.0 中的标记文件声明中缺少 rendered 属性(即使 UIComponent 中提供了该属性),并且 IDE 验证基于标记文件声明。 JSF 2.1 中修复了问题:将缺少的属性添加到标记文件声明中。 IDE 中的验证并不总是反映这种变化。

【讨论】:

  • @Kukeltje rendered 属性在 JSF 2.0 的标记文件声明中缺失,但在 UIComponent 中显示。 IDE 验证基于标记文件声明,它会给出误导性的验证警告/错误。此问题已在 JSF 2.1 中修复,缺少的属性已添加到标记文件声明中。
猜你喜欢
  • 2012-01-31
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
相关资源
最近更新 更多