[英]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.