# MyFaces: HTML Ausgabe Code steuern



## Guest (3. Jun 2008)

Gibt es eigentlich eine Möglichkeit, den von MyFaces generierten HTML Code zur Erzeugung von Komponenten (Tree, Panel etc)zu beeinflussen ?


----------



## maki (3. Jun 2008)

Klar, aber was ist denn die konkrete Frage?


----------



## Guest (3. Jun 2008)

ich wollte einfach wissen, wie das grundsätzlich geht. wenn ich die komponenten zB. selber noch mit spezifischen tags gerendert werden sollen. 

Angenommen myFaces rendert eine Tabelle so


```
<table>
   <tr>
       <td>Inhalt</td>
       <td>Inhalt</td>
       <td>Inhalt</td>
       <td>Inhalt</td>
       <td>Inhalt</td>
       <td>Inhalt</td>
   </tr>
</table>
```

Ich möchte aber ein Ergebnis wie



```
<table>
   <tr>
       <td>Inhalt</td>
   </tr>
   <tr>
       <td>Inhalt</td>
   </tr>
   <tr>
       <td>Inhalt</td>
   </tr>
   <tr>
       <td>Inhalt</td>
   </tr>
</table>
```


----------



## maki (3. Jun 2008)

Klar geht das, ist nur ne Frage wie man den JSP Code aufbaut, zeig doch mal den JSP Code deiner Tabelle.


----------



## Guest (3. Jun 2008)

Klar, diesen simplen Fall kann ich auch direkt mit den MyFaces Tag Attributen steuern, aber wie gesagt wollte nur mal allgemein wissen, wie das geht. Finde im Intenet kein richtiges Beispiel ? Wird dafür etwa diese  "setRendererType" Methode benötigt ? Wie verwende ich die, bzw. wie schreibe ich einen eigenen Renderer ?Dank.


----------



## SnooP (3. Jun 2008)

Du hast doch bei Tabellen nur begrenzt Möglichkeiten etwas anders zu machen... Spalten und Zeilenkombinationen halt... dies kannst du alles mit vorhandenen JSF-Tags nachbilden.
Wenn du Statt Tabellen irgendwelche Divs generieren willst, dann bietet JSF da erstmal keine Möglichkeit - hierzu müsstest du schon eine eigene Komponente bauen, die dir ganz individuell aufgrund tabellarischer Daten irgendetwas dazubaut... - generell sehe ich aber darin keinen Sinn  ... 

zeig doch am besten mal ein Beispiel mit was ganz speziellem und wir können dir dann sagen, ob man das in irgendeiner form via JSF lösen kann... mir erschließt sich so nämlich noch nicht dein problem


----------



## maki (3. Jun 2008)

> Klar, diesen simplen Fall kann ich auch direkt mit den MyFaces Tag Attributen steuern,


Dann verstehe ich deine Frage nicht, konkrete Beispiele wären sinnvoll.

Eigene Renderer? Klar, die Frage ist, ob die Komponeneten einen anderen Renderer zulassen....

Tutorials zu JSF gibt es massig, einfach mal googeln


----------



## Guest (3. Jun 2008)

mein aktuelles Problem ist, dass ich Tabs vertikal angeordnet haben möchte und nicht horizontal. Standardmäßig werden sie horizontal gerendert und zwar als input field in einer zelle. 

Ein Ausschnitt aus der erzeugten HTML Seite: 

```
<script><!--

panelTabbedPane_5Fperson_3Auserdata_3A_5FidJsp28_5FHeadersIDs= new Array("person:headerCell","person:headerCell","person:attributes_headerCell","person:documents_headerCell","person:userdata:account_headerCell");
panelTabbedPane_5Fperson_3Auserdata_3A_5FidJsp28_5FIDs= new Array("person:userdata:staffdata","person:userdata:contactdata","person:userdata:attributes","person:userdata:documents","person:userdata:account");

//--></script>
<input id="person:userdata:_idJsp28_indexSubmit" name="person:userdata:_idJsp28_indexSubmit"   
  style="display:none" />
    <table id="person_userdata__idJsp28" cellspacing="0" class="myFaces_panelTabbedPane">
        <tr class="myFaces_pannelTabbedPane_HeaderRow">
             <td id="person:userdata:staffdata_headerCell" class="myFaces_panelTabbedPane_activeHeaderCell">
                  <input 
                        type="submit" name="person:userdata:_idJsp28.0" value="Tab 1" onclick="return     
                        myFaces_showPanelTab(0,'blabla.... activeTab','tabStyle inactiveTab','activeSubTab','inactiveSubTab');"         
                  /> 
            </td>
            <td>etc</td>
            etc.
       </tr>
   </table>
```

Da es für <x:myFacesPanelTabbedPane> kein Attribut "alignment='vertical'" oder ähnliches gibt, möchte ich eine Ausgabe bzw ein Renderer der eben noch <tr></tr> zwischen die tds schaltet.


----------



## SnooP (4. Jun 2008)

Jo... das wäre relativ aufwendig - imho wurde das Rendering bei den MyFaces Komponenten auch nicht über einen Extra-Renderer gelöst... - ich würde es ganz manuell machen und Facelets + JSTL (foreach) nutzen.
Oder versuch mal die Panel-Navigation oder auch nen dataTable ... die Tabs musst du natürlich dann "grafisch" nachbauen


----------

