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?


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

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.


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.


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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.