繁体   English   中英

在普通的 HTML 属性中使用 JSF EL

[英]Using JSF EL in a plain HTML attribute

我们可以在 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。 在这种情况下,您可以在 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}">

即便如此,上述做法仍被认为是糟糕的做法。 Put CSS in a .css stylesheet file which you include via <link> / <h:outputStylesheet> and use sensible classnames (eg .odd , .even , .success , .cancelled , etc) and render a CSS style class instead. 例如,如果颜色取决于某些状态:

<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>标记中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM