2010-12-13 2 views
0

Ich habe eine <table>, und darin einige <tr> s. Alles ist ausgerichtet, solange keine <tr> in <div> oder <span> verpackt ist.Kann ich <tr> in etwas einpacken, das das Tabellenlayout nicht beeinflusst? (JSF2.0)

Ich muss es wickeln, weil ich JSF verwende und ich diese Zeile manchmal und manchmal nicht rendern muss. Code ist:

<table> 
<!-- some other TRs --> 
<h:panelGroup id="wrapping"> 
    <h:panelGroup rendered="#{bean.render}"> 
    <tr> 
     <th> 
     Some label 
     </th> 
     <td> 
     <h:inputText value="#{bean.value}" /> 
     </td> 
    </tr> 
    </h:panelGroup> 
</h:panelGroup> 
</table> 

ich die "Verpackung" müssen, weil, wenn innere panelGroup nicht gemacht wird, ich einige ID in HTML für Ajax benötigen. Ich brauche auch innere <h:panelGroup>, weil ich JSF rendered Attribut irgendwo verwenden muss, und ich kann es nicht auf <tr> verwenden.

Das Problem besteht darin, dass diese Zeile in <span> eingewickelt ist, und es nicht mehr mit anderen Zeilen ausgerichtet ist. Das gleiche über <div>.

Antwort

1

Versuchen <Thead>, <tbody>, <tfooter>

EDITED

Hier ist Beispiel:

<table> 
<thead id="headForAjax"> <!-- note on this--> 
<!-- some other TRs --> 
<h:panelGroup id="wrapping"> 
    <h:panelGroup rendered="#{bean.render}"> 
    <tr> 
     <th> 
     Some label 
     </th> 
     <td> 
     <h:inputText value="#{bean.value}" /> 
     </td> 
    </tr> 
    </h:panelGroup> 
</h:panelGroup> 
</thead> 
</table> 

Thead verwendet, um Reihen der Gruppenkopf, tbody - Sie verwenden können, um gemeinsame Zeilen zu gruppieren, und so weiter

+0

Ich verstehe nicht. Könnten Sie bitte ein JSF-Snippet mit den erwähnten Tags versehen? – amorfis

+0

@amorfis - nur angehängtes Beispiel von thead mit ID, um in Ajax verwendet zu werden – Dewfy

0

Mischen Sie JSF und HTML-Tags nicht so. Du brichst überall Abstraktionen ab und ich wette, dass du auf diese Weise niemals gültigen HTML-Code bekommst (weshalb dein Layout kaputt ist).

Anstelle einer HTML-Tabelle verwenden Sie eine <h:panelGrid> und setzen Sie das Attribut rendered auf die einzelnen Komponenten dieser Zeile.

Wie für die ID, wofür brauchen Sie es? Wenn es für JSF-unterstützten Ajax ist, glaube ich nicht, dass Sie nur eine Zeile einer Tabelle erneut rendern können. Wenn Sie "manuelles" Ajax machen, können Sie das rowClasses Attribut der panelGrid verwenden, um eine bestimmte gerenderte <tr> eine eindeutige Klasse zu geben.

+0

ID ist für JSF ajax. Sie können einzelne Zeile erneut rendern, kein Problem hier. Ich werde '' anschauen, danke! – amorfis

Verwandte Themen