]
Stuart Douglas commented on WFLY-2073:
--------------------------------------
Is there a ready made reproducer around somewhere?
Uploading a file using JSF 2.2 throws an exception
--------------------------------------------------
Key: WFLY-2073
URL:
https://issues.jboss.org/browse/WFLY-2073
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Web (Undertow)
Affects Versions: 8.0.0.Alpha4
Environment: Ubuntu OS 64 bit, Java 7 (java version "1.7.0_40"), JSF
version 2.2.1, JSF vender JBoss by Red Hat
Reporter: alexandre xypas
Assignee: Stuart Douglas
Labels: servlet, undertow
Fix For: 8.0.0.Beta1
Using JSF 2.2, the following should work:
<h:form enctype="multipart/form-data">
<h:inputFile value="#{bean.file}" required="true">
<f:ajax listener="#{bean.handleFileUploadAjax}"
render="@form" />
</h:inputFile>
<h:messages />
</h:form>
With the bean:
private Part file; // +GET/SET
public void handleFileUploadAjax(AjaxBehaviorEvent event) {
System.out.println("file size: " + part.getSize());
System.out.println("file type: " + part.getContentType());
System.out.println("file info: " +
part.getHeader("Content-Disposition"));
}
The problem remains without using Ajax.
but throws the following exception when a file is uploaded:
22:46:04,333 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (default
task-3) UT000017: Form value is a file, use getFile() instead:
java.lang.IllegalStateException: UT000017: Form value is a file, use getFile() instead
at io.undertow.server.handlers.form.FormData$FormValueImpl.getValue(FormData.java:206)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.spec.HttpServletRequestImpl.getParameter(HttpServletRequestImpl.java:576)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:194)
[jboss-servlet-api_3.1_spec-1.0.0.Beta1.jar:1.0.0.Beta1]
at com.sun.faces.context.RequestParameterMap.containsKey(RequestParameterMap.java:99)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at java.util.Collections$UnmodifiableMap.containsKey(Collections.java:1337)
[rt.jar:1.7.0_40]
at com.sun.faces.renderkit.html_basic.FileRenderer.decode(FileRenderer.java:85)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:831)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIInput.decode(UIInput.java:771)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1225)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIInput.processDecodes(UIInput.java:676)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:87)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:136)
[undertow-websockets-jsr-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:136)
[undertow-websockets-jsr-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:208)
[javamelody-core-1.46.0.jar:1.46.0]
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181)
[javamelody-core-1.46.0.jar:1.46.0]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at com.xypas.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:28)
[classes:]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
[primefaces-4.0-SNAPSHOT.jar:4.0-SNAPSHOT]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
[prettyfaces-jsf2-3.3.3.jar:]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:65)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
org.wildfly.extension.undertow.security.SecurityContextCreationHandler.handleRequest(SecurityContextCreationHandler.java:54)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:207)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:194)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:72)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:128)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.HttpHandlers.executeRootHandler(HttpHandlers.java:36)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:628)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_40]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_40]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_40]
22:46:04,344 ERROR [io.undertow.request] (default task-3) Servlet request failed
HttpServerExchange{ POST /doctor/doctorUpdates.xhtml}: javax.servlet.ServletException:
UT000017: Form value is a file, use getFile() instead
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:87)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:136)
[undertow-websockets-jsr-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:136)
[undertow-websockets-jsr-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:208)
[javamelody-core-1.46.0.jar:1.46.0]
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181)
[javamelody-core-1.46.0.jar:1.46.0]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at com.xypas.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:28)
[classes:]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
[primefaces-4.0-SNAPSHOT.jar:4.0-SNAPSHOT]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145)
[prettyfaces-jsf2-3.3.3.jar:]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:56)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:65)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
org.wildfly.extension.undertow.security.SecurityContextCreationHandler.handleRequest(SecurityContextCreationHandler.java:54)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:207)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:194)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:72)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:128)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.HttpHandlers.executeRootHandler(HttpHandlers.java:36)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:628)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_40]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_40]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_40]
Caused by: java.lang.IllegalStateException: UT000017: Form value is a file, use getFile()
instead
at io.undertow.server.handlers.form.FormData$FormValueImpl.getValue(FormData.java:206)
[undertow-core-1.0.0.Beta7.jar:1.0.0.Beta7]
at
io.undertow.servlet.spec.HttpServletRequestImpl.getParameter(HttpServletRequestImpl.java:576)
[undertow-servlet-1.0.0.Beta7.jar:1.0.0.Beta7]
at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:194)
[jboss-servlet-api_3.1_spec-1.0.0.Beta1.jar:1.0.0.Beta1]
at com.sun.faces.context.RequestParameterMap.containsKey(RequestParameterMap.java:99)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at java.util.Collections$UnmodifiableMap.containsKey(Collections.java:1337)
[rt.jar:1.7.0_40]
at com.sun.faces.renderkit.html_basic.FileRenderer.decode(FileRenderer.java:85)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:831)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIInput.decode(UIInput.java:771)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1225)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIInput.processDecodes(UIInput.java:676)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
at
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
[jsf-impl-2.2.1-jbossorg-1.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
[jboss-jsf-api_2.2_spec-2.2.1.jar:2.2.1]
... 42 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: