Qual componente jsf pode renderizar uma tag div?

129

Por exemplo: h:inputTextrenderizará a "input type='text'". Qual tag jsf pode renderizar uma "div"tag?

user101442
fonte
4
Lembre-se de que, com Facelets e versões mais recentes do JSF, você pode misturar tags HTML padrão com suas tags JSF.
8333 Drew
Bom ponto, mas infelizmente estou preso a uma versão muito antiga.
user101442

Respostas:

234

Você pode criar um DIVcomponente usando o <h:panelGroup/>. Por padrão, <h:panelGroup/>ele gerará um SPAN no código HTML.

No entanto, se você especificar layout="block", o componente será um DIVno código HTML gerado.

<h:panelGroup layout="block"/>
Romain Linsolas
fonte
9
Não é renderizado para mim, a menos que eu inclua um estilo ou classe de estilo no grupo de painéis, usando a implementação mojarra-1.2_15.
James McMahon
3
Adendo ou defina o atributo ID. Se eu não fizer isso, ele aparecerá no HTML sem as tags DIV ao redor.
21711 James McMahon #
1
não devemos imediatamente usar a divprópria tag? Qual pode ser o problema, se houver?
Rajat Gupta 06/07
4
@Marcos Obviamente, você pode usar a divtag, mas neste caso, este componente não fará parte da árvore de componentes JSF (ou seja, não estará disponível no código Java). Além disso, você não poderá atualizá-lo diretamente usando o Ajax (exceto, é claro, se você fizer a atualização diretamente em alguns dos seus códigos JavaScript).
Romain Linsolas
1
A resposta é apenas metade da verdade. Consulte aqui docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/… ou aqui docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/… . A informação importante é que você também precisa de um styleou styleClassatributo para divque isso aconteça ... o que torna a história absolutamente estranha IMHO: uma planície <h:panelGroup layout="block">renderiza uma <span>? Não faz sentido para mim.
Kawu
18

No JSF 2.2, é possível usar elementos de passagem :

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

O requisito é ter pelo menos um atributo no elemento usando o namespace jsf.

mp31415
fonte
14

Além do <h:panelGroup>componente (o que é uma surpresa para mim), você pode usar uma <f:verbatim>tag com o parâmetro de escape definido falsepara gerar qualquer marcação desejada. Por exemplo:

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

Lembre-se de que é um pouco menos elegante que a panelGroupsolução, pois você deve gerá-lo para as tags de início e de fim, se desejar agrupar qualquer código do JSF com a divtag.

Como alternativa, todas as principais estruturas de interface do usuário têm uma divmarca de componente ou você pode escrever sua própria.

Nick Grubb
fonte
4
não devemos usar imediatamente a própria tag div? Qual pode ser o problema, se houver?
Rajat Gupta
3

você pode usar o componente tomahawk myfaces

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

jack jin
fonte
Eu até removi o tomahawk de um projeto. Depois o projeto foi muito mais rápido! Eu não recomendaria usar tomahawk!
marcel
1
Faço esta resposta em 2011. Agora, estou usando Primefaces, e se sente muito bem disso
jack jin
-3

Eu acho que podemos usar tag literal, pois nessa tag usamos qualquer uma das tags HTML

Sanket
fonte
Seriamente? PORQUE? Tag verbete é algo que foi relevante na era jsp. Na era das facelets (10 anos agora?), A maioria é supérflua, certamente nesse caso.
21717 Kukeltje