# MyFaces 1.2.6 EL?



## atomic1986 (4. Mai 2009)

Hallo!

Ich wende mich mal wieder mein einem meiner Problemchen an euch. Wahrscheinlich hängt es nur am Verständnis aber ich suche jetzt schon einige Stunden. Zu meinem Problem:

Ich habe für meine Studienarbeit (Suche und Verwaltung von Dokumenten) die MyFaces Implementierung 1.1.5 genutzt. Das Hochladen von Dateien mit tomahawk hat mir einige Probleme bereitet, wahrscheinlich wegen der Notwendigkeit von enctype="multipart/form-data". Mein Button wollte dann einfach nicht mehr.

Ich habe jetzt auf die MyFaces 1.2.6 gewechselt und siehe da der Button funktioniert. Allerdings kann er jetzt nicht mehr auf das UploadedFile der Bean zugreifen.

Folgender Fehler kommt:

```
javax.el.ELException: /sites/addSA3zip.xhtml @26,103 value="${saController.entry.upFile1}": Error writing 'upFile1' on type container.SABean
	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:101)
	at javax.faces.component.UIInput.updateModel(UIInput.java:287)
	at javax.faces.component.UIInput.processUpdates(UIInput.java:214)
	at javax.faces.component.UIForm.processUpdates(UIForm.java:99)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:746)
	at javax.faces.component.UIViewRoot.access$201(UIViewRoot.java:62)
	at javax.faces.component.UIViewRoot$3.process(UIViewRoot.java:145)
	at javax.faces.component.UIViewRoot.process(UIViewRoot.java:260)
	at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:141)
	at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:33)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:151)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at container.SABean.setUpFile1(SABean.java:53)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68)
	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:180)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:143)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
	... 30 more
04.05.2009 17:33:12 javax.faces.webapp._ErrorPageWriter handleExceptionList
SCHWERWIEGEND: An exception occurred
javax.faces.FacesException: Exception while setting value for expression : ${saController.entry.upFile1} of component with path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /sites/addSA3zip.xhtml][Class: javax.faces.component.html.HtmlForm,Id: fileUpload][Class: org.apache.myfaces.custom.fileupload.HtmlInputFileUpload,Id: fileUpload1]}
	at javax.faces.component.UIInput.queueExceptionInRequest(UIInput.java:322)
	at javax.faces.component.UIInput.updateModel(UIInput.java:304)
	at javax.faces.component.UIInput.processUpdates(UIInput.java:214)
	at javax.faces.component.UIForm.processUpdates(UIForm.java:99)
	at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:746)
	at javax.faces.component.UIViewRoot.access$201(UIViewRoot.java:62)
	at javax.faces.component.UIViewRoot$3.process(UIViewRoot.java:145)
	at javax.faces.component.UIViewRoot.process(UIViewRoot.java:260)
	at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:141)
	at org.apache.myfaces.lifecycle.UpdateModelValuesExecutor.execute(UpdateModelValuesExecutor.java:33)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:151)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: /sites/addSA3zip.xhtml @26,103 value="${saController.entry.upFile1}": Error writing 'upFile1' on type container.SABean
	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:101)
	at javax.faces.component.UIInput.updateModel(UIInput.java:287)
	... 29 more
Caused by: java.lang.NullPointerException
	at container.SABean.setUpFile1(SABean.java:53)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68)
	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:180)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:143)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
	... 30 more
```
Ich habe keine folgende jars in WEB-INF/lib :

commons-beanutils-1.7.0.jar
commons-codec-1.3.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-discovery-0.4.jar
commons-el-1.0.jar
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-lang-2.1.jar
commons-logging-1.1.1.jar
jsf-facelets.jar
jstl-1.1.0.jar
myfaces-api-1.2.6.jar
myfaces-commons-utils12-1.0.0.jar (aus Verzweiflung zu viel)
myfaces-converters12-1.0.0.jar (aus Verzweiflung zu viel)
myfaces-impl-1.2.6.jar
mysql-connector-java-5.1.7-bin.jar
tomahawk-1.1.8.jar

Da könnte schon ein Fehler sein. Aber egal welche Implementierung einer EL (el-ri.jar/el-iml.jar/el-api.jar/alle als 1.0/juel/etc) ich als jar reinpacke, der tomcat sagt mir immer er hätte schon irgendwas dafür initialisiert.

Kann mir irgendwer nen Rat geben, was mir fehlt/was ich mit der 1.2.6 beachten muss oder etc.  Vielen Dank.

PS: Auch mit Zugriff per #{saController.entry.upFile1} geht es nicht. Ich dachte da zunächst an JSP2.0...


----------



## gex (4. Mai 2009)

Hast du denn den Extension-Filter konfiguriert?


```
<filter>
  <filter-name>MyFacesExtensionsFilter</filter-name>
  <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
  <init-param>
   <description>Set the size limit for uploaded files.
            Format: 10 - 10 bytes
                    10k - 10 KB
                    10m - 10 MB
                    1g - 1 GB</description>
   <param-name>uploadMaxFileSize</param-name>
   <param-value>20m</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>MyFacesExtensionsFilter</filter-name>
  <url-pattern>*.jsf</url-pattern>
 </filter-mapping>
```


----------



## atomic1986 (5. Mai 2009)

Ja hab ich.
Ich habe dann zwar statt:

```
<url-pattern>*.jsf</url-pattern>
```
dass hier:

```
<url-pattern>*.faces</url-pattern>
```
aber das sollte ja passen...

Sprech ich die Attribute über # oder $ an? Die anderen Attribute der entry-Bean werden ja geschrieben, ich find das komisch.

Der Tomcat schreibt beim starten: 

```
INFO: No context init parameter 'org.apache.myfaces.CHECK_EXTENSIONS_FILTER' found, using default value true
05.05.2009 09:55:00 org.apache.myfaces.shared_tomahawk.config.MyfacesConfig createAndInitializeMyFacesConfig
```
Deutet das darauf hin, dass der Extensionsfilter doch nicht richtig initialisiert wurde?


----------



## atomic1986 (5. Mai 2009)

Ok ich habe jetzt nach langem suchen rausgefunden, dass der Tomcat in seinem Lib-Verzeichnis schon eine el-api.jar vorhält. Deshalb der Konflikt. Der Zugriff auf das UploadedFile Attribut funktioniert immernoch nicht. Auf alle anderen Attribute der Bean funktioniert das aber. Keiner eine Idee?


----------



## atomic1986 (5. Mai 2009)

Ok, das Thema kann geschlossen und gelöscht werden 
Da ganze Framework mag es wohl nicht wenn man in die setter-Methoden von Attributen noch einen weiteren Funktionsaufruf einbaut (z.B. das hinzufügen der Datei in einer ArrayList). Danke Gex für deinen Hilfeversuch.


----------

