# action-Methode wird nicht aufgerufen



## Andreas29 (3. Dez 2007)

Hi Leute,

ich habe in JSF folgenden commandButton erzeugt:

```
<h:commandButton style="position:absolute;left:230px;top:400px;" value="#{msg.button_schedule_new_job}" action="#{jobDetailBackingBean.test}" />
```

Wie man sieht, will ich von meiner Managed Bean die Methode test aufrufen. Die sieht so aus:

```
public String test(ActionEvent event) {
		logger.debug("enter 'test' on 'JobDetailBackingBean'");
		logger.debug("leaving 'test' on 'JobDetailBackingBean'");
		return "success";
	}
```

Nur leider rennt er mir nicht in die Methode rein. Woran kann sowas liegen?
Ich verwende die MyFaces Implementierung auf einem Bea Weblogic 8.1 Server mit Java 1.4.2.
Achso, die managed-Bean deklaration in der faces-config sieht so aus:

```
<managed-bean>
		<managed-bean-name>
		jobDetailBackingBean</managed-bean-name>
		<managed-bean-class>
		de.conti.gutsintegration.scheduling.webapp.bean.JobDetailBackingBean</managed-bean-class>
		<managed-bean-scope>
		request</managed-bean-scope>
	</managed-bean>
```

Vielen Dank für jeden Tipp und Grüße,
Andreas


----------



## maki (3. Dez 2007)

Seit wann erwartet eine Action ein Parameter?


----------



## happy_robot (3. Dez 2007)

du rufst hier eine actionlistener methode auf!

nimm den ActionEvent-Parameter weg und es klappt.
die signatur muss zu 100% stimmen.

gewöhn dir so was an, da man sich da oft "vertut":


```
public void myActionListener(ActionEvent event) {
          // mach was
  }

   public String myAction() {
        myActionListener(null);
        return null; // oder was auch immer 
   }
```


EDIT:

ihr solltet auch mal eure package-benamsumgs-strategie überdenken.

"de.conti.gutsintegration.scheduling.webapp.bean.JobDetailBackingBean" scheint mir nicht wirklich cool zu sein


----------



## Andreas29 (4. Dez 2007)

Hi,

erstmal vielen Dank für eure Antworten. Ich habe die action-Methode jetzt so umgebaut:

```
public String scheduleNewJob()
```

Leider ohne Erfolg. Kann es was mit der MyFaces-Implementierung zu tun haben? Ich verwende momentan Version 1.1.5. Werde jetzt mal 1.2.0 ausprobieren.

Grüße,
Andreas


----------



## Andreas29 (4. Dez 2007)

Hi,

habe jetzt MyFaces 1.2.0 getestet und festgestellt, dass dort Java 1.5.0 vorrausgesetzt wird, welches ich leider nicht verwenden kann. Von daher geht dieser Weg leider nicht. Naja, dann werde ich jetzt nochmal Sun RI probieren.

Danke für die Hilfe.


----------



## number8 (6. Dez 2007)

Auf jeden Fall solltest Du, wenn nicht schon vorhanden, mal ein h:messages ein bauen. Ansonsten...steht der h:commandButton in einer form?

((Es tut zwar denke ich nichts zur Sache, aber der scope der bean steht auf Request. Das soll so sein?))


----------



## happy_robot (6. Dez 2007)

number8 hat gesagt.:
			
		

> Ansonsten...steht der h:commandButton in einer form?


au ja...das ist mir am anfang auch oft passiert  ohne form drumrum wird generell nix an aktionen ausgeführt. daran kann man echt verzweifeln.



			
				number8 hat gesagt.:
			
		

> ((Es tut zwar denke ich nichts zur Sache, aber der scope der bean steht auf Request. Das soll so sein?))


könnte auch durchaus ein fehler sein, da das bean schon wieder weg ist nachdem die view erzeugt wurde, zumindest laut definition. hier gibt es aber teilweise sehr abenteuerliche verhalten in den verschiedenen frameworks. sich generell auf session-beans zu beschränken könnte hier die bessere wahl sein.

ich fass mal grad zusammen, damit das auch direkt rockt   : 

- bean-scope in der faces-config.xml auf "session" setzen

- jsp

```
........
   <h:form> 
     <h:commandButton action="#{myBean.action}" value="Klick!"/> 
   </h:form>
```

- in myBean MUSS eine methode 

```
public String action() {
              return null;
         }
```

sein (void als Rückgabewert geht auch, Signatur muss aber stimmen!).


----------



## Andreas29 (6. Dez 2007)

Hi Leute,

erstmal vielen Dank für die vielen nützlichen Hinweise, aber die Lösung des Problems ist sehr einfach:
MyFaces unter Weblogic 8.1 verweigert die Formularausführung, sobald in der JSP-Seite entweder <%@ include... %> oder <jsp:include /> Tags stehen (sofern man ersteres als Tag bezeichnen kann...  ). Warum dem so ist, habe ich noch nicht herausgefunden, aber nachdem ich die entfernt habe, funktionierte es auf einmal wieder. Muss ich wohl mal in der MyFaces Mailingliste nachfragen, denn normal ist dieses Verhalten nicht. Und ich brauche eigentlich die includes...

Naja, es wird sich schon eine Lösung finden.

Grüße,
Andreas


----------

