我们可以在 HTML 标记中使用 JSF EL 吗?例如,在纯 HTML<td>
元素中,我们可以使用 EL#{bean.color}
作为bgcolor
属性吗?
<td bgcolor="#{bean.color}">
我们可以在 HTML 标记中使用 JSF EL 吗?例如,在纯 HTML<td>
元素中,我们可以使用 EL#{bean.color}
作为bgcolor
属性吗?
<td bgcolor="#{bean.color}">
答案取决于 JSF 版本和使用的视图技术。您正在寻找的技术术语是“在模板文本中使用 EL”(即不在任何标签/组件内)。
根据您的问题历史记录,您在 Websphere 上使用 JSF 1.2。我假设您仍在使用旧的 JSP,它是 Facelets 的前身。JSF EL 是否#{}
在模板文本中工作取决于所使用的 JSP 版本。JSP 版本与 Servlet 版本齐头并进。
当您的容器支持 Servlet 2.5 并且web.xml
声明符合 Servlet 2.5 时,那么您使用的是 JSP 2.1。在这种情况下,您可以#{bean}
在 JSP 中使用。JSF EL#{}
即以“统一 EL”的名义从 JSF 1.1 移至 JSP 2.1。
<td bgcolor="#{bean.color}">
但是,当您的容器最多支持 Servlet 2.4 时,那么您基本上使用的是 JSP 2.0,而您必须使用它${bean}
。
<td bgcolor="${bean.color}">
这只有一个前提条件:在同一个文档中,在上面引用 JSF bean 的行之前${bean}
的某处,您需要确保您已经事先#{bean}
在 JSF 标记中引用了同一个 bean ,否则 bean 将不会t 是预先创建的。
当您使用 JSP 的后继Facelets时,即使在 Servlet 2.4 环境中,您也可以只使用
<td bgcolor="#{bean.color}">
与问题无关,该bgcolor
属性在 HTML中已弃用。您应该改用 CSSstyle
属性。
<td style="background: #{bean.color}">
即便如此,上述做法仍被认为是糟糕的做法。将 CSS 放入您通过/.css
包含的样式表文件中,并使用合理的类名(例如、、、等)并改为呈现 CSS 样式类。例如,如果颜色取决于某些状态:<link>
<h:outputStylesheet>
.odd
.even
.success
.cancelled
<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>
标记中。