6

我们可以在 HTML 标记中使用 JSF EL 吗?例如,在纯 HTML<td>元素中,我们可以使用 EL#{bean.color}作为bgcolor属性吗?

<td bgcolor="#{bean.color}">
4

3 回答 3

7

答案取决于 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}">
于 2011-06-08T18:33:46.270 回答
2

您可以在 facelets 中将 el 与 html 集成。

例子:

   <td style="background: #{bean.color};"><br /></td> 

示例 2:

<script type="text/javascript">
    window.location = '#{bean.url}';
</script>
于 2011-06-08T18:20:13.840 回答
1

这取决于。如果您使用 Facelets 作为 ViewHandler,是的。如果您使用 JSP,则 HTML 必须在<f:verbatim>标记中。

于 2011-06-08T18:22:41.233 回答