Który składnik JSF może renderować znacznik DIV?

132

Np .: h:inputTextwyrenderuje plik "input type='text'". Jaki tag JSF może renderować "div"tag?

user101442
źródło
4
Pamiętaj, że dzięki Facelets i nowszym wersjom JSF możesz dowolnie mieszać standardowe tagi HTML z tagami JSF.
Drew
Słuszna uwaga, ale niestety utknąłem w bardzo starej wersji.
user101442

Odpowiedzi:

237

Możesz utworzyć DIVkomponent za pomocą <h:panelGroup/>. Domyślnie <h:panelGroup/>wygeneruje SPAN w kodzie HTML.

Jeśli jednak określisz layout="block", komponent będzie występował DIVw wygenerowanym kodzie HTML.

<h:panelGroup layout="block"/>
Romain Linsolas
źródło
9
Nie renderuje się za mnie, chyba że dodam styl lub klasę stylu do grupy paneli, używając implementacji mojarra-1.2_15.
James McMahon
3
Addendum lub ustaw atrybut ID. Jeśli tego nie zrobię, po prostu pojawi się w kodzie HTML bez otaczających tagów DIV.
James McMahon
1
czy nie powinniśmy od razu użyć samego divtagu? Jaki może być problem, jeśli w ogóle?
Rajat Gupta
4
@Marcos Oczywiście możesz użyć divtagu, ale w tym przypadku ten komponent nie będzie częścią drzewa komponentów JSF (tj. Nie będzie dostępny w kodzie Java). Oprócz tego nie będziesz mógł odświeżyć go bezpośrednio za pomocą Ajax (z wyjątkiem, oczywiście, jeśli wykonasz odświeżanie bezpośrednio w części kodu JavaScript).
Romain Linsolas,
1
Odpowiedź to tylko połowa prawdy. Zobacz tutaj docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/… lub tutaj docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/… . Ważną informacją jest to, że potrzebujesz również jednego stylelub styleClassatrybutu, divaby wydarzyło się a ... co sprawia, że ​​historia jest absolutnie dziwna. IMHO: a zwykły <h:panelGroup layout="block">renderuje <span>? To nie ma dla mnie sensu.
Kawu
18

W JSF 2.2 można używać elementów przejściowych :

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

Wymagane jest posiadanie co najmniej jednego atrybutu w elemencie korzystającym z przestrzeni nazw jsf.

mp31415
źródło
14

Oprócz <h:panelGroup>komponentu (co jest dla mnie pewnym zaskoczeniem), możesz użyć <f:verbatim>tagu z parametrem escape ustawionym na, falseaby wygenerować dowolne znaczniki. Na przykład:

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

Pamiętaj, że jest to trochę mniej eleganckie niż panelGrouprozwiązanie, ponieważ musisz wygenerować to zarówno dla znacznika początkowego, jak i końcowego, jeśli chcesz otoczyć divtagiem dowolny kod JSF .

Alternatywnie, wszystkie główne struktury interfejsu użytkownika mają divznacznik komponentu lub możesz napisać własny.

Nick Grubb
źródło
4
Czy nie powinniśmy od razu użyć samego znacznika DIV? Jaki może być problem, jeśli w ogóle?
Rajat Gupta
3

możesz użyć komponentu myfaces tomahawk

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

Jack Jin
źródło
Usunąłem nawet tomahawka z projektu. Potem projekt był znacznie szybszy! Nie polecałbym korzystania z tomahawka!
marcel
1
Robię to odpowiedź w roku 2011. Teraz używam primefaces, i czuje się bardzo dobrze z nim
gniazda jin
-3

Myślę, że możemy użyć tagu dosłownie, ponieważ w tym tagu używamy dowolnego z tagów HTML

Sanket
źródło
Poważnie? CZEMU? Znacznik Dosłowny to coś, co było istotne w erze jsp. W dobie faceletów (10 lat?) Jest to w większości zbędne, na pewno w tym przypadku.
Kukeltje