【问题标题】:Purpose of the h:outputLabel and its "for" attributeh:outputLabel 及其“for”属性的用途
【发布时间】:2013-07-06 19:38:47
【问题描述】:

这是the <h:outputLabel> tag documentation的摘录:

呈现一个 HTML“标签”元素。渲染当前值 组件作为标签文本(如果已指定)。如果“for”属性是 指定,查找由“for”的值指定的组件 属性,并将其客户端 ID 呈现为“for”的值 属性。如果指定了“styleClass”属性,则将其值呈现为 “class”属性的值。

我对@9​​87654324@ 属性感到困惑。它的目的是什么?

【问题讨论】:

标签: jsf label


【解决方案1】:

如果您先学习基本的 HTML,会更容易理解。 JSF 在这个问题的上下文中,即仅仅是一个 HTML 代码生成器。 htmldog.com 有一个出色的 HTML 教程。由<h:outputLabel> 生成的<label> 解释为here

HTML 标签:标签

表单元素的标签(inputtextareaselect)。

可选属性

for 的值与元素的id 属性的值匹配时,for 可用于将标签与表单元素相关联。

示例

<label for="email">Email address</label>
<input type="text" name="email" id="email" />

所以for 属性必须指向输入组件的id,标签打算label。该标签具有以下 SEO 和可用性优势:

  1. 它以文本形式说明相关的输入元素。
  2. 当被聚焦/单击时,它会聚焦并激活关联的输入元素。

由于 JSF 在这个问题的上下文中只是一个 HTML 代码生成器,因此同样适用于生成该 HTML 的 JSF 组件。

<h:outputLabel for="email">Email address</h:outputLabel>
<h:inputText id="email" />

搜索机器人会找到标签并索引相关的输入元素。视障人士使用的屏幕阅读器会找到标签并通过声音告诉其内容。最终用户可以单击标签以查看相关输入得到关注。单击标签时将选中复选框/单选按钮。单击标签时,文件输入将打开浏览对话框。等等。


应该注意的是,相对很多低质量的 JSF 教程滥用&lt;h:outputLabel&gt;,其唯一目的是打印出一些 Hello World 文本,如下所示:

<h:outputLabel value="#{bean.message}" />

因此,这个特定的用例是错误的。相反,应该使用&lt;h:outputText&gt;

<h:outputText value="#{bean.message}" />

甚至只是EL in template text:

#{bean.message}

如果你遇到这样一个滥用&lt;h:outputLabel&gt; 的教程,强烈建议停止阅读它并转向更自尊的资源。这有力地表明本教程的作者对基本 HTML 一无所知,而这反过来又是学习 JSF 之前非常重要的先决条件。一个对基本 HTML 几乎一无所知的人肯定不是一名优秀的 JSF 老师。您永远不知道这种低质量的学习资源是否会继续陷入教学不良做法的螺旋式下降,因此最好转向不同的学习资源。您可以在our JSF wiki pagejsf.zeef.com 底部找到链接的合理资源。

【讨论】:

  • @BalusC 非常感谢你:)。你说得对!我应该先学习基本的 HTML。
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2014-09-09
  • 2012-08-17
  • 1970-01-01
  • 2011-05-01
  • 2017-09-18
  • 2014-10-17
相关资源
最近更新 更多