# merkwürdige Exception in JSF



## Andreas29 (21. Nov 2007)

Hi Leute,

ich habe eine einfach JSF-Seite erstellt, auf der ich drei Eingabefelder in entsprechende Member einer Bean mappen wollte. Als JSF-Implementierung verwende ich Apache MyFaces, wobei ich nicht sagen kann, ob der Fehler daher kommt. Hier erstmal meine Fehlermeldung:

```
javax.faces.el.PropertyNotFoundException: Error getting property 'trigger' from bean of type java.lang.String
	at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:107)
	at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
	at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:151)
	at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
	at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
	at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:147)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:82)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:191)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:169)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:720)
	at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:623)
	at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:546)
	at com.sun.faces.taglib.html_basic.OutputTextTag.doEndTag(OutputTextTag.java:173)
	at jsp_servlet._pages.__createtriggerform._jspService(__createtriggerform.java:212)
	at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:526)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
	at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:330)
	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
	at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:330)
	at weblogic.servlet.jsp.PageContextImpl.forward(PageContextImpl.java:150)
```

Meine Beanklasse sieht so aus:

```
package de.conti.gutsintegration.scheduling.webapp;

import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

public class TriggerDataBean implements ActionListener {

	private String triggerName;

	private String triggerDescription;

	private String triggerGroupName;

	public TriggerDataBean() {
		super();
	}

	public String getTriggerName() {
		return triggerName;
	}

	public void setTriggerName(String triggerName) {
		this.triggerName = triggerName;
	}

	public String getTriggerDescription() {
		return triggerDescription;
	}

	public void setTriggerDescription(String triggerDescription) {
		this.triggerDescription = triggerDescription;
	}

	public String getTriggerGroupName() {
		return triggerGroupName;
	}

	public void setTriggerGroupName(String triggerGroupName) {
		this.triggerGroupName = triggerGroupName;
	}

	public void createTrigger(ActionEvent event) {
		System.out.println("createTrigger called");
	}

	public void processAction(ActionEvent event)
			throws AbortProcessingException {
		createTrigger(event);
	}
}
```

Und meine JSF Seite so:

```
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
 <head>
  <title>enter your name page</title>
 </head>
 <body>
 <f:view>
 	<f:loadBundle basename="jsfks.bundle.messages" var="msg"/>
 	<h1>
 	<h:outputText value="#{msg.create.trigger.form.title}" />
 	</h1>
 	<h:form id="createTriggerForm">
 		<h:outputText value="#{msg.trigger.attribute.triggername}"/>
 		<h:inputText value="#{triggerDataBean.triggerName}" />
 		<h:outputText value="#{msg.trigger.attribute.triggerdescription}"/>
 		<h:inputTextarea value="#{triggerDataBean.triggerDescription}" />
 		<h:outputText value="#{msg.trigger.attribute.triggergroupname}" />
 		<h:inputText value="#{triggerDataBean.triggerGroupName}"/>
 		<h:commandButton action="createTrigger" value="Test">
 			<f:actionListener type="de.conti.gutsintegration.scheduling.webapp.TriggerDataBean"/>
 		</h:commandButton>
 	</h:form>
 </f:view>
 </body>
</html>
```

Kann mir einer sagen, wo ich den Fehler gemacht habe? Aus der Meldung werde ich leider nicht so wirklich schlau...

Vielen Dank für jeden Hinweis!!

Grüße,
Andreas


----------



## maki (21. Nov 2007)

```
<h:outputText value="#{msg.create.trigger.form.title}" />
```
msg ist dein MessageBundle, da steckt doch nicht deine TriggerDataBean drinnen.


----------



## Andreas29 (21. Nov 2007)

Hi,

habe den Fehler mittlerweile selbst gefunden. JSF scheint etwas gegen propertynamen im Format msg.create.trigger.form.title zu haben. Habe jetzt bis auf den ersten Punkt alles durch Unterstriche ersetzt und jetzt läuft es.

@Maki:
Nein, das ist nicht mein TriggerDataBean. Das ist nur der Name des Formulars. Und da das ein Formular zum Erstellen eines Triggers werden soll, schien mir der Name so irgendwie sinnvoll... 

Danke für Eure Hile.

Grüße,
Andreas


----------



## maki (21. Nov 2007)

> habe den Fehler mittlerweile selbst gefunden. JSF scheint etwas gegen propertynamen im Format msg.create.trigger.form.title zu haben. Habe jetzt bis auf den ersten Punkt alles durch Unterstriche ersetzt und jetzt läuft es.


Klar, das sind ja auch keine properties, sondern nur die Namen deiner Messages, ein Punkt sollte nur für properties verwendet werden.


----------

