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:
die zugehörige faces-config.xml
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
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: