[JSF] Facelets und <h:form>

mattis_gsn

Grünschnabel
Hi!

Ich nutze in meiner JSF-Web-App facelets fürs Templating.

Und eigentlich funktioniert auch alles toll, bis zu dem Zeitpunkt, an dem ich in einen Frame (z.B. die Menüleiste) ein <h:form>-Tag einfüge. Dann wird die Oberfläche nur bis zu diesem Frame aufgebaut, die folgenden Frames (also z.B. der Body und der Footer) werden nicht mehr angezeigt.

Wenn ich kein <h:form>-Tag benutze wird die Seite korrekt aufgebaut. JSF-Tags wie <h:input-Text> usw. werden korrekt gerendert. Die Navigation und alles weitere (BackingBeans, usw..) funktioniert auch, deshalb gehe ich davon aus, das ich alles richtig konfiguriert habe. Eigentlich funktioniert es ja auch, allerdings nur bis ich <h:form> einbaue.

Kann mir jemand helfen? Hat schon mal jemand mit facelets gearbeitet?

Mattis
 
Habe die Lösung gefunden:

facelets funktionieren NICHT mit der JSF-RI von Sun (bzw. nicht so ganz richtig. Mit nur einer form funktioniert es ja schon...). Scheint ein Programmierfehler von Sun zu sein, denn mit myFaces funktioniert alles prima.
 
Hallo Happy,

kann dir die xhtml nicht schicken - das projekt ist inzwischen schon längst abgeschlossen und ich habe keinen zugriff mehr drauf.

das problem lag damals an der Anzahl der Forms in einer Datei - wenn ich mich recht erinnere ist die RI (version 1.1) nicht mit mehr als einer form zurecht gekommen. Aber inzwischen gibt es die RI in Version 1.2 und auch facelets hat doch immense Versions-Sprünge gehabt. Solche Kinderkrankheiten sollten also der Vergangenheit angehören.

Ich vermute, dass dein Problem wo anderes liegt. Poste doch mal etwas Code, dann kann ich drüber schauen...
 
in der login.xhml datei möchte ich 2 formulare haben.
1/ das erste formular soll nur für die anmeldung sein(usrname und pass eingeben, danach auf anmelden drücken, um sich anzumelden).funktioniert bis jetzt ohne <h:form />(habe ich nicht gebraucht. habe nur 2 eingabefelder und 1 button erzeugt).

2/ das zweite soll für die Registrierung sein.das soll ein button sein.wenn man draufclickt soll man zu einer anderen xhtml seite verwiesen werden. bis jetzt habe ich mehrmals versucht aber klappt irrgendwie nicht.
ich habe 1/ geändert, indem ich alles in <h:form /> geschrieben habe und ein zweites <h:form /> für die Registrierung eingebaut habe. Aber dieses zweite <h:form /> wird nicht gerendert. und ausserdem funktioniert nicht mehr das erste <h:form /> nachdem ich das zweite einbaut.

das was ich angehängt habe ist keine <h:form> dabei und funktioniert(da habe ich nur 2 eingebefelder und ein button für die Login).
 
dir ist schon bekannt, dass du Daten an den Server schickst, in dem du einen Form submittest, oder?

du solltest also deine Login-Form so (ähnlich) aussehen lassen:
<h:form id="deineLoginForm">
user: <h:inputText value="#{loginBean.user} />
password: <h:inputText value="#{loginBean.password} />
<h:commandButton value="login" action="#{loginBean.loginAction}" />
</h:form>

und in der Java-Method "loginAction" (die eine String zurück gibt - den NAVIGATION-OUTCOME) machst du dann die User und Passwort Überprüfung.
in der FacesConfig definierst du ja die Navigationsfälle anhand dieser outcomes...

und für die Registierung:
<h:form id="deineRegisterForm>
<h:commandButton value="register" action="showRegisterPage" />
</h:form>
wobei du halt in der FacesConfig einen Navigations-Eintrag für Login-Seite mit diesen outcome machen musst, der auf die Register-Seite zeigt.
im beispielhaften detail:
<navigation-rule>
<from-view-id>/login.xhml</from-view-id>
<navigation-case>
<from-outcome>showRegisterPage</from-outcome>
<to-view-id>/register.xhtml</to-view-id>
</navigation-case>
</navigation-rule>

deine navigations-fälle in der facesconfig schauen meiner Meinung nach nicht so gut aus - du hast nur globale Navigations-Cases gemacht. das ist meistens nicht so gut... aber vielleicht macht es bei dir ja sinn. Falls du von Navigations-Zeugs nichts weißt, schau dir das mal an:
http://www.jsftutorials.net/jsf-navigation-by-examples.html

hoffe ich habe dir geholfen.
grüße,

Mattis
 

Neue Beiträge

Zurück