【发布时间】:2011-09-11 02:48:09
【问题描述】:
我们可以在 HTML 标签中使用 JSF EL 吗?例如,在纯 HTML <td> 元素中,我们可以将 EL #{bean.color} 用于 bgcolor 属性吗?
<td bgcolor="#{bean.color}">
【问题讨论】:
标签: html jsf attributes el managed-bean
我们可以在 HTML 标签中使用 JSF EL 吗?例如,在纯 HTML <td> 元素中,我们可以将 EL #{bean.color} 用于 bgcolor 属性吗?
<td bgcolor="#{bean.color}">
【问题讨论】:
标签: html jsf attributes el managed-bean
答案取决于 JSF 版本和使用的视图技术。您正在寻找的技术术语是“在模板文本中使用 EL”(即不在任何标签/组件内)。
根据您的问题历史记录,您在 Websphere 上使用 JSF 1.2。我假设您仍在使用旧的 JSP,它是 Facelets 的前身。 JSF EL #{} 是否在模板文本中工作取决于所使用的 JSP 版本。 JSP 版本与 Servlet 版本齐头并进。
当您的容器支持 Servlet 2.5 并且声明 web.xml 符合 Servlet 2.5 时,那么您使用的是 JSP 2.1。在这种情况下,您可以在 JSP 中使用 #{bean}。 JSF EL #{} 即从 JSF 1.1 移至 JSP 2.1,名称为“统一 EL”。
<td bgcolor="#{bean.color}">
但是,当您的容器最多支持 Servlet 2.4 时,您基本上使用的是 JSP 2.0,而您必须改用 ${bean}。
<td bgcolor="${bean.color}">
这只有一个先决条件:在同一个文档中,在上述行中您通过${bean} 引用 JSF bean 的某处,您需要确保您已经 事先在 JSF 标记中通过 #{bean} 引用了相同的 bean,否则不会预先创建 bean。
当你使用 JSP 的后继者Facelets 时,即使在 Servlet 2.4 环境中,你也可以使用
<td bgcolor="#{bean.color}">
与问题无关,bgcolor 属性在 HTML 中已弃用。您应该改用 CSS style 属性。
<td style="background: #{bean.color}">
即便如此,上述做法仍被认为是糟糕的做法。将 CSS 放入您通过 <link>/<h:outputStylesheet> 包含的 .css 样式表文件中并使用合理的类名(例如 .odd、.even、.success、.cancelled 等)并呈现 CSS 样式类反而。例如,如果颜色取决于某些状态:
<td class="#{bean.status}">
【讨论】:
您可以在 facelets 中将 el 与 html 集成。
示例:
<td style="background: #{bean.color};"><br /></td>
示例 2:
<script type="text/javascript">
window.location = '#{bean.url}';
</script>
【讨论】:
这取决于。如果您使用 Facelets 作为 ViewHandler,是的。如果您使用 JSP,HTML 必须在 <f:verbatim> 标记中。
【讨论】:
<f:verbatim>。在 JSF 1.2 中,这不再是必需的了。根据问题历史,OP 使用的是 JSF 1.2。