# JSF - CommandButton keine Action



## jensa (24. Apr 2008)

HardwareBean.java

```
public String Save(){
		System.out.println("es wird gesaved...");
		return ("success");
	}
```

faces-config.xml

```
<managed-bean>
		<managed-bean-name>hardwareBean</managed-bean-name>
		<managed-bean-class>
			de.ks.tsys.jasshaue.verwaltung.beans.HardwareBean
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>

<navigation-rule>
  <from-view-id>/insertHardware.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/listHardware.xhtml</to-view-id>
  </navigation-case>
</navigation-rule>
```

insertHardware.xhtml

```
<h:form>
<h:panelGrid columns="2" footerClass="subtitle"
  headerClass="subtitlebig" styleClass="medium"
  columnClasses="subtitle,medium">
  <f:facet name="header">
    <h:outputText value="Hardware Erfassung"/>
  </f:facet>
  <h:outputText value="#{msg.hardwareTyp}" />
  <h:selectOneMenu id="typ">
  <f:selectItems
   value="#{hardwareBean.typenItems}" />
</h:selectOneMenu>
  <h:outputText value="#{msg.hardwareBezeichnung}" />
  <h:inputText id="bezeichnung"/>
  <h:outputText value="#{msg.hardwareDetails}" />
  <h:inputTextarea id="details"
   rows="10" cols="30"
   value="Beschreibung des Artikels"/>
  <h:outputText value="#{msg.hardwarePreis}" />
  <h:inputText id="preis" value="#{hardwareBean.test}"/>
</h:panelGrid>
<h:commandLink value="Hardware speichern" id="submit" action="#{hardwareBean.Save}" />
</h:form>
```

Die Daten können aus der hardwareBean geholt werden, jedoch wird die Methode Save nicht beim klicken des CommandLinks ausgeführt.:/

woran kann es liegen?

Habe Apache Tomcat 6.0.x
& erhalte auch keine Fehlermeldungen beim klicken / starten des Projekts.

Gruß jensa


----------



## maki (24. Apr 2008)

Gibt es Validator/Converter Messages?

FacesTrace hilft mir bei JSF immer sehr, man übersieht nur allzuleicht eine fehler ausgabe auf dem INFO level...


----------



## jensa (24. Apr 2008)

halo maki,

wollte FaceTrace einbinden doch scheinbar ist FaceTrace nicht kompatibel mit meinen Versionen die ich benutze:/



> SCHWERWIEGEND: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
> java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
> at com.prime.facestrace.phase.listener.TraceResourcePhaseListener.<init>(TraceResourcePhaseListener.java:40)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> ...



leider finde ich auch nirgends was faceTrace für abhängigkeiten erfüllt bekommen muss:/



//edit ich hatte vergessen das ich die common-logging noch nicht im build path hatte sry

habe es nun eingefügt am ende wie es empfohlen wird:

und erhalte folgende Fehlermeldung:


> XML-Verarbeitungsfehler: nicht wohlgeformt
> Adresse: http://localhost:8080/verwaltung/insertHardware.xhtml
> Zeile Nr. 118, Spalte 83:</div><script language="JavaScript1.2" src="traceResource.jsf?name=facestrace&type=js"></script>
> ----------------------------------------------------------------------------------^



einmal die komplette insertHardware.xhtml

evtl wenn einer etwas zum design / stil sagen könnte wäre ich auch sehr froh, bin noch in der Lernphase von JSF+ Faceletes & co


```
<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:t="http://myfaces.apache.org/tomahawk"
      xmlns:ft="http://facestrace.sourceforge.net">
      <head>
      <title>Seitentitel</title>
      </head>
<body>
<ui:composition template="/defaultPage.xhtml">
<ui:define name="content">
<div class="content">
<h:form>
<h:panelGrid columns="2" footerClass="subtitle"
  headerClass="subtitlebig" styleClass="medium"
  columnClasses="subtitle,medium">
  <f:facet name="header">
    <h:outputText value="Hardware Erfassung"/>
  </f:facet>
  <h:outputText value="#{msg.hardwareTyp}" />
  <h:selectOneMenu id="typ">
  <f:selectItems
   value="#{hardwareBean.typenItems}" />
</h:selectOneMenu>
  <h:outputText value="#{msg.hardwareBezeichnung}" />
  <h:inputText id="bezeichnung"/>
  <h:outputText value="#{msg.hardwareDetails}" />
  <h:inputTextarea id="details"
   rows="10" cols="30"
   value="Beschreibung des Artikels"/>
  <h:outputText value="#{msg.hardwarePreis}" />
  <h:inputText id="preis" value="#{hardwareBean.test}"/>
</h:panelGrid>
<h:commandLink value="Hardware speichern" id="submit" action="#{hardwareBean.Save}" />
</h:form>
</div>
<ft:trace/>
</ui:define>

</ui:composition>

</body>
</html>
```


----------



## maki (24. Apr 2008)

http://facestrace.sourceforge.net/dependencies.html

Da kannst du die Liste der benötigten jars etc. einsehen (dependencies & transitive dependencies, jeweiles ""provided"").

Normalerweise hat man die alle sowieso schon in Webprojekten, mit Maven 2 würden sie automatisch runtergeladen werden.


----------



## jensa (24. Apr 2008)

hallo, hatte oben bereits geändert, 
aber trotzdem danke für den link werd ihn mir anschauen.

ist es denn empfehlenswert (ein muss) heutzutgae mit Maven 2 als Build-Management - Tool zu arbeiten?
Sollte man dort einsteigen oder kann man auch gut ohne Maven 2 leben?


----------



## maki (24. Apr 2008)

> st es denn empfehlenswert (ein muss) heutzutgae mit Maven 2 als Build-Management - Tool zu arbeiten?


Ja, sehr empfehlenswert.



> Sollte man dort einsteigen oder kann man auch gut ohne Maven 2 leben?


Man kann ohne Maven 2 leben, aber das Leben ist besser mit Maven 2


----------



## jensa (24. Apr 2008)

okay evtl gute link tipps wo man einen guten einblick in Maven2 erhält?

http://sophisticated-it.de/index.php/2008/03/03/maven-in-eclipse-verwenden/

fand diesen Beitrag gut aber es konnte mich damals nicht 100% überzeugen aber wenn es empfehlenswert ist noch einmal tiefer alles nachschlagen wäre dann sinvoll.

@ topic:
bezgülich der fehlermeldung einen Lösungsvorschlag?
bzgl des XML-Verarbeitungsfehlers aufgrund der nicht wohlgeformtheit?
die Meldung kommt durch facelets.DEVELOPMENT = true in der web.xml ist die erweiterete Fehlerausgabe von facelets.


----------



## maki (24. Apr 2008)

Nachdem du dich registriert hast, kannst du das offizielle Buch zu Maven2 "Better Builds with Maven" runterladen: http://www.devzuz.com/web/guest/products/resources#BBWM


Zu dem Problem kann ich nicht viel sagen, kenne mich mit Facelets nicht aus, scheint was mit Facestrace und Facelets zu sein.


----------



## jensa (24. Apr 2008)

okay danke für den tipp aber irgendwie ist der download selbst als logged user nicht mögoich auf gurnd eines fehlers.

weiß jemand anderes wie ich das umgehen kann / fehlerfrei bekomme?

auch abgesehen vom facetrace problem mein urproblem, das ich nicht von der jsf-page mithilfe einer action eine Bean-Methode aufrufen kann:/

gruß jensa


----------



## jensa (25. Apr 2008)

habe jetzt noch einmal ein wenig herumgeforscht.

und weiß das die Bean exisitiert, da einerseits die Selecdaten geholt werden können & andererseits ein fehler entsteht sollte ich die Bean anders deklarieren.
Heißt die Kommunikationsrichtung Bean --> JSF Seite steht & funktioniert
die Kommunikation JSF --> Bean funktioniert nicht

habe es gestest mit  gettern & settern ob ich werte von wo nach wo übergeben kann & dabei hatte sich das obige ergebnis herausgestellt.

hoffe ihr könnt mir helfen?
gruß jensa


----------



## maki (25. Apr 2008)

Stell mal dein Log Level auf INFO für die ganzen JSF geschichten, suche nach Validator und Converter Messages.


----------



## jensa (5. Mai 2008)

Hallo,
jetzt konnte ich mich wieder dem Problem widmen.
also


> 10:40:37,914 DEBUG TraceResourcePhaseListener:44 - View Root :/insertUser.xhtml


diese einzige Ausgabe erhalte ich habe das Loglevel auf Info gesetzt erhalt jedoch keine Info einträge bis auf das der Logger gestartet wird.

oder wie meintest du das?
bin noch nicht so fit im Umgang mit Log4j.

Ich lade einen Log4jConfigLoader beim Projektstart via web.xml


> <servlet>
> <servlet-name>log4j-init</servlet-name>
> <servlet-class>de.ks.tsys.jasshaue.verwaltung.log.Log4jConfigLoader</servlet-class>
> <load-on-startup>2</load-on-startup>
> </servlet>



und lade in dem ConfigLoader einen neuen Log4j-Monitor und setze im Monitor das Level mittels setLevel() auf level.info.

Wie meintest du das genau?
weil so wie ich sagen täte fehlt mir der Zugriff auf das Faces Context oder?

Gruß jensa


----------



## jensa (6. Mai 2008)

hmm also bin immernoch dran hab weiter getestet

und einmal eine neue Bean & neue xhtml seite geschrieben und siehe da es funktioniert, warum funktioniert es da und aber nicht bei den oben geschriebenen fall?


----------



## Gast (6. Mai 2008)

Hast du diesmal vielleicht etwas anders gemacht als bei dem Fall oben?


----------



## jensa (7. Mai 2008)

Habe den Fehler gefunden nachdem ich nochmal gründlichst alles durchleuchtet hatte habe ich entdeckt das ich in meinem faces template damals aus bequemheit nen <h:form>um die kompl. Seite gemacht habe die Formularbereiche waren somit verschachtelt und sollten die Ursache gewesen sein.

Besten dank für eure Bemühungen & sorry das es ein dummer fehler von mir war


----------

