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?


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"/>

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.


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.


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


-3

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.