【问题标题】:id attribute of subview tag子视图标签的id属性
【发布时间】:2009-01-05 10:00:28
【问题描述】:

我正在学习 jsf。当我使用以下代码时,我在 java.lang.String 中得到类转换异常:

<f:facet name="header">
  <f:subview id="header">
    <tiles:insert attribute="header" flush="false"/>
  </f:subview>
</f:facet>

如果我将子视图 ID 替换为标题以外的其他名称,则代码将成功运行。例如

<f:facet name="header">
  <f:subview id="header1">
    <tiles:insert attribute="header" flush="false"/>
  </f:subview>
</f:facet>

我正在使用 David Geary 和 Cay Horstmann 编写的核心 Java 服务器面簿。书中给出的示例对于 facet name 和 subview id 具有相同的值。请解释为什么我们应该为 facet name 和 subview id 提供不同的值。

【问题讨论】:

  • 这里应该没有冲突。可能是实现错误。哪个 JSF 库提供程序(例如 Apache;Sun)?什么版本?控制方面是什么?堆栈跟踪可能会有所帮助。
  • 看看javapassion.com/handsonlabs/jsftiles,尤其是“练习3”,看看你是否漏掉了什么。还要检查你没有拼错任何东西。
  • 你能发布堆栈跟踪吗?

标签: java jsp jsf


【解决方案1】:

组件树使用 id 来引用所有内容。使用 jsf,您应该始终使用唯一 id 引用所有内容,或者您​​可以让 jsf 这样做,但如果您在多个标签中明确指定相同的名称,您将遇到问题。

【讨论】:

  • @mugafuga 我不知道你是否正确,因为我对 JSF 不太熟悉,但我在上面评论中提供的链接中的示例具有相同的代码(我假设它来了来自同一来源)。
  • @mugafuga - 构面名称与组件 ID 不同。分面用于描述命名的子项(例如表格的页眉或页脚)。一个 id 在视图中必须是唯一的;不必是构面名称。
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 2021-07-23
  • 2012-06-10
  • 2012-02-28
  • 2020-09-28
相关资源
最近更新 更多