Использование JSF EL в атрибуте простого HTML - PullRequest
5 голосов
/ 08 июня 2011

Можем ли мы использовать JSF EL внутри тега HTML?Например, внутри простого элемента HTML <td> мы можем использовать EL #{bean.color} для атрибута bgcolor?

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

Ответы [ 3 ]

6 голосов
/ 08 июня 2011

Ответ зависит от версии JSF и используемой технологии просмотра.Технический термин, который вы ищете, это «использование EL в тексте шаблона» (т.е. не внутри какого-либо тега / компонента).

В соответствии с вашей историей вопросов вы используете JSF 1.2 в Websphere.Я предполагаю, что вы все еще используете старую JSP, предшественницу Facelets.Работает ли JSF EL #{} в тексте шаблона, зависит от используемой версии JSP.Версия JSP идет рука об руку с версией Servlet.

Если ваш контейнер поддерживает Servlet 2.5, а web.xml объявлен как Servlet 2.5, то вы используете JSP 2.1.В этом случае вы можете просто использовать #{bean} в JSP.JSF EL #{} был перемещен из JSF 1.1 в JSP 2.1 под именем "унифицированный EL".

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

Однако, когда ваш контейнер поддерживает максимум Servlet 2.4, вы в основном используете JSP2.0, и вместо этого вы должны использовать ${bean}.

<td bgcolor="${bean.color}">

Это имеет только одно предварительное требование: в том же документе, где-то за до вышеупомянутой строки, где вы ссылаетесь на бин JSF с помощью ${bean}, вам нужно убедиться, что вы уже уже ссылались на тот же компонент с помощью #{bean} в теге JSF заранее, иначе компонент не будет создан заранее.

Когда выВы используете преемника JSP Facelets , хотя в среде Servlet 2.4 вы можете просто использовать

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

См. также:


Не связано с проблемой, атрибут bgcolor устарел в HTML.Вместо этого вы должны использовать атрибут CSS style.

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

Даже в этом случае вышеупомянутое считается плохой практикой.Поместите CSS в файл стилей .css, который вы включаете с помощью <link> / <h:outputStylesheet>, и используйте разумные имена классов (например, .odd, .even, .success, .cancelled и т. Д.) И визуализируйте класс стилей CSS.вместо.Например, если цвет зависит от некоторого статуса:

<td class="#{bean.status}">
1 голос
/ 08 июня 2011

Это зависит.Если вы используете Facelets в качестве ViewHandler, да.Если вы используете JSP, HTML должен быть в теге <f:verbatim>.

1 голос
/ 08 июня 2011

Вы можете интегрировать el с HTML в Facelets.

пример:

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

пример 2:

<script type="text/javascript">
    window.location = '#{bean.url}';
</script>
...