Какой компонент jsf может отображать тег div?

129

Например: h:inputTextотобразит файл "input type='text'". Какой тег jsf может отображать "div"тег?

user101442
источник
4
Имейте в виду, что с Facelets и новыми версиями JSF вы можете смешивать стандартные теги HTML с тегами JSF.
Дрю
Хороший момент, но, к сожалению, я застрял на очень старой версии.
user101442 04

Ответы:

234

Вы можете создать DIVкомпонент, используя расширение <h:panelGroup/>. По умолчанию <h:panelGroup/>в HTML-коде будет создан SPAN.

Однако, если вы укажете layout="block", то компонент будет DIVв сгенерированном HTML-коде.

<h:panelGroup layout="block"/>
Ромен Линсолас
источник
9
Не отображает для меня, если я не добавлю стиль или класс стиля в группу панелей, используя реализацию mojarra-1.2_15.
Джеймс МакМахон
3
Дополнение или установите атрибут ID. Если я этого не сделаю, он просто появится в HTML без окружающих тегов DIV.
Джеймс МакМахон
1
Разве мы не должны сразу использовать сам divтег? В чем может быть проблема?
Rajat Gupta
4
@Marcos Конечно, вы можете использовать divтег, но в этом случае этот компонент не будет частью дерева компонентов JSF (т.е. недоступен в коде Java). Кроме того, вы не сможете обновить его напрямую с помощью Ajax (за исключением, конечно, тех случаев, когда вы выполняете обновление непосредственно в некотором коде JavaScript).
Romain Linsolas 06
1
Ответ - только половина правды. См. Здесь docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/… или здесь docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/… . Важная информация заключается в том, что вам также нужен атрибут styleили styleClassдля того, divчтобы произошло ... что делает историю совершенно странной. ИМХО: простой <h:panelGroup layout="block">будет отображать <span>? Для меня это не имеет смысла.
Каву
18

В JSF 2.2 можно использовать сквозные элементы:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
    ...
    <div jsf:id="id1" />
    ...
</html>

Требуется наличие хотя бы одного атрибута в элементе, использующем пространство имен jsf.

mp31415
источник
14

Помимо <h:panelGroup>компонента (что для меня немного неожиданно), вы можете использовать <f:verbatim>тег с параметром escape, установленным на, falseчтобы генерировать любую разметку, которую вы хотите. Например:

<f:verbatim escape="true">
    <div id="blah"></div>
</f:verbatim>

Имейте в виду, что это немного менее элегантно, чем panelGroupрешение, так как вам нужно сгенерировать его как для начального, так и для конечного тегов, если вы хотите обернуть какой-либо из своего кода JSF divтегом.

В качестве альтернативы, все основные UI Framework имеют divтег компонента, или вы можете написать свой собственный.

Ник Грабб
источник
4
Разве мы не должны сразу использовать сам тег div? В чем может быть проблема?
Rajat Gupta
3

вы можете использовать компонент myfaces tomahawk

http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_div.html

Джек Джин
источник
Я даже убрал томагавк из проекта. После этого проект пошел намного быстрее! Я бы не рекомендовал использовать томагавк!
Марсель
1
Я даю этот ответ в 2011 году. Сейчас я использую премьер-фейс, и мне это очень нравится,
Джек Джин
-3

Я думаю, вы можете использовать дословный тег, поскольку в этом теге мы используем любой из тегов HTML

Sanket
источник
Шутки в сторону? ЗАЧЕМ? Дословный тег был актуален в эпоху jsp. В эпоху фейслетов (10 лет назад?) Это по большей части излишнее, в данном случае , конечно .
Kukeltje