【问题标题】:Necessity of setting ID attribute of components in JSF 1.1JSF 1.1中设置组件ID属性的必要性
【发布时间】:2011-12-14 20:23:02
【问题描述】:

免责声明:我知道 JSF 2.0 的存在并且很熟悉。这个问题是关于 IBM WebSphere 下的 JSF 1.1

我听到/看到了不同程度的支持,即页面上的所有 JSF 组件都需要在开发时指定一个 ID 属性。当我说“所有”组件时,我指的是所有组件……包括传统上“仅输出”的组件,例如<h:ouputText><h:panelGroup><h:panelGrid> 等……

这个问题在内部不断出现,以响应日志中“重复的组件 ID”异常的出现。声称具有重复 ID 的组件有时是 JSF 生成的 ID,或者是无法显式设置的元素的 ID(例如,具有 n 行数的网格中的一行元素)。

我正在寻找有关 JSF 组件范围内应该、可以或需要(或不)设置哪些 ID 的客观指导。

我主要关心两方面:

  • 以疯狂的方式向所有事物(甚至可能不需要它们的事物)追溯主动添加 ID,以消除任何可能性 发生重复组件 ID 异常的情况可能不是最好的 时间的使用。
  • HTML 流中的结果膨胀 运行/渲染时间很丑陋,例如,<span> 带有 ID 的元素 绝对不会为页面增加任何建设性价值

附录:

根据这里关于 SO 的更多研究和其他帖子,我可能仍然有点困惑。 以下哪项是“正确的”?:

方法 A:<f:subview> 在包含页面中指定

<%-- parent_page.jsp --%>
<html>
    <f:view>
        <jsp:include page="included_child_page.jsp" />
    </f:view>
</html>


<%-- included_child_page.jsp --%>
<f:subview id="myID">
    <h:outputText value="Some content here..." />
</f:subview>

方法 B:&lt;f:subview&gt; 在包含/父页面中指定

<%-- parent_page.jsp --%>
<html>
    <f:view>
        <f:subview id="myID">
            <jsp:include page="included_child_page.jsp" />
        </f:subview>
    </f:view>
</html>


<%-- included_child_page.jsp --%>
<h:outputText value="Some content here..." />

我们的绝大多数 JSP 都使用上面的方法 A。我们经常从这些页面中的许多页面中获取 Duplicate Component ID 错误。少数页面被更改为使用方法 B。我们很少/永远不会从这些页面中得到错误——当我们这样做时,通常来自呈现集合(表/列表)的组件,其中 Faces 实现必须生成任意 ID给定行或元素的运行时。

根据那次经验,我很难理解哪种方式应该一直有效。哪种方式正确

【问题讨论】:

  • 在 JSP 上的 JSF 1.x 应用程序中出现重复组件 ID 错误通常是由于错误地使用了 &lt;f:subview&gt; 标记和/或 binding 属性造成的。在整个视图中应该有 one &lt;f:subview&gt; 具有该 ID(注意重新包含的子视图!)并且应该有 one 组件绑定到 @ 后面的属性987654332@(注意在多个视图之间共享的会话范围 bean!)。
  • 那么,关于正确使用&lt;f:subview&gt; 的方法有哪些经验指导?在包含的文件本身中始终/从不包含 &lt;f:subview&gt; 标签对是否安全?或者这是偏好、性能问题,还是以上都不是?

标签: java jsf


【解决方案1】:

我认为规范从未要求为组件提供明确的 ID。如果用户没有设置 ID,JSF 应该总是生成一个。

也就是说,JSF 参考实现 (RI),我猜是史前 WebSphere 可能正在使用的,在 1.1 中是非常错误的,因此您可能会遇到错误而不是使用 JSF错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多