JSF/Facelets mit Seam-Framework

thommy.s

Aktives Mitglied
Hallo liebe Leuts,

hab ein vllt. für den Kenner einfaches Problem, komm' aber nicht mehr weiter und kau' an diesem auch schon ne Weile herum.

Nutze JSF (1.2) bzw. Facelets innerhalb des Seam-Frameworks (Ver. 2.2), mit Templating. Nun ja, die Startseite wird auch richtig zusammengesetzt, links an der Seite wie üblich eine Navigation mit Buttons, includiert. Dazu eine "managed-bean", die auf die Buttonaktionen reagieren soll bzw. auch die Zustände der Buttons setzen soll ("enabled-disabled)

Bean hier:

Java:
package jsf.managedbeans;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;


@Name("globalSettings")
@Scope(ScopeType.SESSION)
public class GlobalSettings {
	public GlobalSettings() {
		
		
	}	
	
	

	
	private String stateHome;
	private String stateThemes;
	private String stateSearch;
	private String stateLinks;
	private String stateLogin;
	
	
	public String getStateHome() {
		return stateHome;
	}
	public void setStateHome(String stateHome) {
		this.stateHome = stateHome;
	}
	
	public String getStateThemes() {
		return stateThemes;
	}
	public void setStateThemes(String stateThemes) {
		this.stateThemes = stateThemes;
	}
	
	public String getStateSearch() {
		return stateSearch;
	}
	public void setStateSearch(String stateSearch) {
		this.stateSearch = stateSearch;
	}
	
	public String getStateLinks() {
		return stateLinks;
	}
	public void setStateLinks(String stateLinks) {
		this.stateLinks = stateLinks;
	}
	
	public String getStateLogin() {
		return stateLogin;
	}
	public void setStateLogin(String stateLogin) {
		this.stateLogin = stateLogin;
	}
	
	
	
	
public String pressThemesButton() {
		
		this.stateThemes = "true";
		this.stateSearch = "false";
		this.stateLinks = "false";		
		this.stateLogin = "false";
		this.stateHome = "false";
		
		
		System.out.println("Ich, der Thememliste-Button, wurde gedrückt");


		return stateThemes;
		
	}
	
	public String pressSearchButton() {
		
		this.stateThemes = "false";
		this.stateSearch = "true";
		this.stateLinks = "false";		
		this.stateLogin = "false";
		this.stateHome = "false";
		this.navigation = "/searchthemes.xhtml";

		return stateSearch;
		
	}
	
	
	public String pressLinksButton() {
		
		this.stateThemes = "false";
		this.stateSearch = "false";
		this.stateLinks = "true";		
		this.stateLogin = "false";
		this.stateHome = "false";
		

		return stateLinks;
		
	}
	
	
	public String pressLoginButton() {
		
		this.stateThemes = "false";
		this.stateSearch = "false";
		this.stateLinks = "false";		
		this.stateLogin = "true";
		this.stateHome = "false";
		

		return stateLogin;
		
	}


die zugehörige faces-config.xml

Java:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 
 <navigation-rule>
  <from-view-id>*</from-view-id>
  <navigation-case>
   <from-action>#{globalSettings.pressThemesButton()}</from-action>
   <from-outcome>true</from-outcome>
   <to-view-id>/themes.xhtml</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>*</from-view-id>
  <navigation-case>
   <from-action>#{globalSettings.pressHomeButton()}</from-action>
   <from-outcome>true</from-outcome>
   <to-view-id>/welcome.xhtml</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  
 </application>
</faces-config>

[ /JAVA]

Die Buttons sollen letztlich auf die anderen Seiten weiterleiten, wie gesagt aus einem includierten Schnipsel. Hab' u.a. auch schon mal versucht, den Pfad in der faces-config.xml relativ auf den Schnipsel zu beziehen; das meckert Eclipse aber an, der Pfad müsste mit "/" beginnen. Jedenfalls gibt es keine Reaktion auf eine Button-Drückaktion, ein Kontroll System.out.println("bla") in der aufzurufenden Methode wird auch nicht erreicht. Es scheint also so zu sein, dass die entsprechende Methode eben gar nicht aufgerufen wird.

Hier auch noch die XHTML-Seite, die die Buttons "trägt"

[code=Java]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:ui="http://java.sun.com/jsf/facelets">
	  
	    

<ui:composition>	
	 
		<h:commandButton styleClass="navibtns" disabled="false" action="#{globalSettings.pressHomeButton()}" value="Home" />
		<p />
		<h:commandButton styleClass="navibtns" disabled="#{globalSettings.stateThemes}" action="#{globalSettings.pressThemesButton()}" value="Themenliste" />
		<p />
		<h:commandButton styleClass="navibtns" disabled="#{globalSettings.stateSearch}" action="#{globalSettings.pressSearchButton()}" value="Suche" />
		<p />
		<h:commandButton styleClass="navibtns" disabled="#{globalSettings.stateLinks}" action="#{globalSettings.pressLinksButton()}" value="Links" />
		<p />
		<hr />
		<h:commandButton styleClass="navibtns" disabled="#{globalSettings.stateLogin}" action="#{globalSettings.pressLoginButton()}" value="Login" />
		<p />		

	
</ui:composition>

</html>


Wäre für Hilfe echt dankbar; in einer früheren Version (ohne Seam) hat zumindest das mit den Zuständen schon mal funktioniert. Wenn noch weitere Informationen benötigt werden, nur zu.


Seid gegrüßt

Thomas
 
Zuletzt bearbeitet:

MrWhite

Bekanntes Mitglied
Zunächst mal: Ich sehe da nirgends eine Form! Also ohne Form geht schonmal nix!

Code:
<h:form>
!


Wenn es das nicht ist:

Geb dir mal die Faces Messages aus, vielleicht steht was drin.

Wenn die Methode nicht aufgerufen wird, kommst du erst gar nicht in die Invoke Application Phase von JSF, sprich, du bleibst irgendwo vorher hängen (evtl. bei der Validierung von irgendwelchen Items?).

Was mir mal passiert ist: Sieh nach, ob du irgendwo, z.B. bei der Vergabe von IDs gegen den W3C Standard verstößt. Bestimmte Zeichen darin mag JSF ganz und gar nicht, z.B. Square Brackets ('[').

Hier die erlaubten Zeichen als regex: [A-Za-z0-9.,:=]
 

thommy.s

Aktives Mitglied
danke, der Tipp war schon mal gut...

Hatte mich grad mit JSF anfreunden wollen, dann sollte ich doch gleich 'Seam' nehmen, weil da ja alles so viel einfacher ist...

Hab's einfach nicht mehr gesehen

Jetzt bekomm' ich zwar ne Debug-Page, aber es passiert wieder was

javax.el.PropertyNotFoundException: /includes/navigation_one.xhtml @14,152 action="#{globalSettings.pressThemesButton()}": Target Unreachable, identifier 'globalSettings' resolved to null.


Und das schau' ich mir erst morgen an, nach dem Aufsteh'n...:):toll:
 

thommy.s

Aktives Mitglied
nun hab' ich die Bean doch noch mal in der faces-config.xml konfiguriert, und siehe da, da geht's.

Mir wurde allerdings gesagt, dass ich innerhalb des Seam-Frameworks mit Annotations arbeiten könnte (siehe oben im Bean-Quelltext), das würde reichen.

Vielleicht könntest du, MrWhite, mir noch erklären, warum das anscheinend nicht geht? Hab' ich noch 'ne Konfiguration übersehen?
 

thommy.s

Aktives Mitglied
Seam Filter ist konfiguriert, siehe Ausschnitt web.xml

[XML]
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
[/XML]

Wenn ich deine Hinweise richtig gelesen habe, ist alles korrekt... hmm


Hab' aber auch noch gesehen , dass je nach Quelle nicht

org.jboss.seam.servlet.SeamFilter, sondern

org.jboss.seam.web.SeamFilter verwendet wird. Ist schon alles ganz schön verwirrend.

Hab' es jedenfalls mit beiden versucht, jedoch immer noch ohne Erfolg. Den Filter auszukommentieren brachte keinerlei Veränderung im Verhalten der Anwendung; derzeit verwende ich wohl noch keine Seam-Komponenten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JSF JSP, Facelets und einbinden einer js-Datei Web Tier 2
W JSF Facelets integriert in JSF ? Web Tier 44
M Tobago und Facelets Web Tier 5
J Facelets javascript compiler problem Web Tier 3
ruutaiokwu jstl-basierendes tag in jsf 2.0. facelets/xhtml? Web Tier 5
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
ruutaiokwu facelets content-type... Web Tier 5
ruutaiokwu jsf facelets mit xhtml strict 1.0 Web Tier 2
Y Facelets Dependency gesucht Web Tier 2
MrWhite Facelets: Dynamische Attribute Web Tier 3
R JSF Custom Tags + Facelets Web Tier 2
S Facelets Form: Validation abschalten bei Abbrechen-Button Web Tier 2
A JSTL Tags funktionieren nicht in Facelets/MyFaces Web Tier 3
eskimo328 dynamische Navigaiton und JSF (facelets) Web Tier 6
B JSF/Facelets - Fehlermeldung ausgeben Web Tier 13
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
J facesContext ist null bei seam-Projekt Web Tier 3
J seam 2 sprache ändern Web Tier 3
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
T Seam-Projekt Eingabefeld mit "null"-Wert Web Tier 7
T Seam Anwendung EAR-Projekt Web Tier 3
D Seam Example Probleme Web Tier 2
J a4j-MediaOutput / Seam 2.1 : jpg lassen sich nur bis 5 KB anzeigen Web Tier 3
P Richfaces/Seam: RichShuttleListe funktioniert nicht Web Tier 8
D Richfaces (Seam/Hibernate): dynamische Eingabefelder Web Tier 2
T Spark Java Web Framework Web Tier 0
M JSF Framework für User Management etc. Web Tier 0
Spin Shiro Apache Security Framework Web Tier 3
Dit_ Framework-Wahl Web Tier 5
J Welches Framework für Webentwicklung? Web Tier 13
M Suche Java Framework Web Tier 2
S Framework, AJAX Drag and Drop Hilfe? Web Tier 2
H Welches Ajax Framework Web Tier 8
M html + jquery(javascript-framework): elegantes und flexibles Formulardesign Web Tier 5
K Webanwendung, welche Framework? Web Tier 6
G Framework ohne JSP? Web Tier 10
M Java Framework für größere Projekte verwenden Web Tier 5
D Die ewige Suche nach dem richtigen Web-Framework Web Tier 34
S Welches Web-Framework ist das richtige? Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben