KarlRannseier
Grünschnabel
Hi all,
vorab : ich bin relativ neu in JSF/Faclets/etc..... .
Naja, also ich will eigenlich nur ein Property eine Managed Bean setzen und bekomme es nicht hin. es wäre nett wenn Ihr mir helfen könnt.
Folgendes habe ich gemacht :
Ich habe mir ein kleine Klasse mit einer einzigen Property erstellt. zu der Property dann auch getter und setter definiert. Zusätzlich habe ich während meiner versuche zwei Funktionen ergänzt.
Dann habe ich die Klasse über die faces-config.xml mit demJSF verbunden :
Und in meiner "body.xhtml" Datei kann ich so das Property auch auslesen :
Aber das setzen der Property über ein commandlink o.ä. bekomme ich einfach nicht hin.
bis jetzt habe ich es so versucht (zumindes iast das der letzte stand):
Der Link "Body2" mit der action "Test" geht, also scheint die Verknüpfung ok zu sein.
aber bei dem Link "Body1" bekomme ich folgende Fehlermeldung :
Soweit ich es verstanden habe schafft er nicht den Parameter für die Funktion zu übergeben, dadurch ist die Funktionssignatur verschieden, und er findet die Funktion nicht.
Den Parameter zu übergeben habe ich auch schon per <f:commandButton> probiert, und auch als "value" im commandlink tag und noch ein wenig mehr.
Es wäre schön wenn mir jemand sagen könnte wie ich das Property richtig setzen kann.
Vielen Dank für eure mühe im Voraus.
Beste Grüße
Karl
vorab : ich bin relativ neu in JSF/Faclets/etc..... .
Naja, also ich will eigenlich nur ein Property eine Managed Bean setzen und bekomme es nicht hin. es wäre nett wenn Ihr mir helfen könnt.
Folgendes habe ich gemacht :
Ich habe mir ein kleine Klasse mit einer einzigen Property erstellt. zu der Property dann auch getter und setter definiert. Zusätzlich habe ich während meiner versuche zwei Funktionen ergänzt.
Java:
package com.antoniushof.navigation;
public class MainNavigation {
private String currentNavigation;
public MainNavigation(){
super();
}
public String getCurrentNavigation() {
return currentNavigation;
}
public void setCurrentNavigation(String currentNavigation) {
this.currentNavigation = currentNavigation;
}
public void navigate(String target){
this.currentNavigation = target;
}
public String test(){
this.currentNavigation = "Das ist ein Test";
return "sucess";
}
}
Dann habe ich die Klasse über die faces-config.xml mit demJSF verbunden :
HTML:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<managed-bean>
<description>
Dies Klasse hilft die Navigation zu verwirklichen
</description>
<managed-bean-name>MainNav</managed-bean-name>
<managed-bean-class>com.antoniushof.navigation.MainNavigation</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<application>
<locale-config>
<default-locale>de</default-locale>
</locale-config>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
</faces-config>
Und in meiner "body.xhtml" Datei kann ich so das Property auch auslesen :
HTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" >
<head></head>
<body>
<p>Das ist ein Test :</p>
<p>#{MainNav.currentNavigation}</p>
</body>
</html>
Aber das setzen der Property über ein commandlink o.ä. bekomme ich einfach nicht hin.
bis jetzt habe ich es so versucht (zumindes iast das der letzte stand):
HTML:
<jsp:root xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:jsp="http://java.sun.com/JSP/Page">
<head></head>
<body>
<h:form>
<h:commandLink action="#{MainNav.setCurrentNavigation}">
<h:outputText value="Body1"/>
<f:param name="currentNavigation" value="body1.xhtml" />
</h:commandLink>
<br/>
<h:commandLink action="#{MainNav.test}">
<h:outputText value="Body2"/>
</h:commandLink>
</h:form>
</body>
</jsp:root>
Der Link "Body2" mit der action "Test" geht, also scheint die Verknüpfung ok zu sein.
aber bei dem Link "Body1" bekomme ich folgende Fehlermeldung :
Code:
javax.servlet.ServletException: #{MainNav.setCurrentNavigation}: javax.el.MethodNotFoundException: /WEB-INF/Templates/navigation.xhtml @10,62 action="#{MainNav.setCurrentNavigation}": Method not found: com.antoniushof.navigation.MainNavigation@1be4777.setCurrentNavigation()
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
Den Parameter zu übergeben habe ich auch schon per <f:commandButton> probiert, und auch als "value" im commandlink tag und noch ein wenig mehr.
Es wäre schön wenn mir jemand sagen könnte wie ich das Property richtig setzen kann.
Vielen Dank für eure mühe im Voraus.
Beste Grüße
Karl