[JAVA] JSF + MyFaces + Tomahawk fileUpload
: 30 sty 2010, 14:18
Mam problem z wgraniem pliku. Postępuję zgodnie z tutorialem opisanym tutaj. Kiedy robię sobie taką prościutką aplikację wszystko działa ale gdy próbuję wrzucić to do większego projektu aplikacja wywala się w momencie zatwierdzenia formularza. Dostaję taki komunikat:
Metoda uploadAvatar, na która wskazuje pierwszy błąd:
Błąd wskazuje na linię, w której pierwszy raz próbuję się odwołać do uploadowanego pliku.
Mój web.xml:
Po ciężkiej nocy googlowania nie mogę rozwiązać tego problemu. Znalazłem tylko coś o mapowaniu Faces Servlet. Moje teraźniejsze ustawienia powodują takie coś, że jak uruchamiam konkretnie welcome-file czyli index.jsp wszystko działa poprawnie, linki przenoszą mnie tam gdzie chce itd., oczywiście do czasu wgrania obrazka. Wtedy wszystko się sypie. Gdy startuje projekt otwiera mi się welcome file, ale żaden z linków w nim zawartych nie kieruje mnie tam gdzie powinien. Więc może coś z tym mapowaniem jest źle? Sam nic w tym nie mieszałem, jest takie jakie ustawia się w netbeansie.
Opisywałem problem na innym forum ale bez odzewu. Help
Kod: Zaznacz cały
2010-01-29 21:19:42 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at pl.iwm.LoginUserBean.uploadAvatar(LoginUserBean.java:360)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
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:341)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
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(Thread.java:619)
Kod: Zaznacz cały
public void uploadAvatar() {
System.out.println("File type: " + uploadedFile.getContentType());
System.out.println("File name: " + uploadedFile.getName());
System.out.println("File size: " + uploadedFile.getSize() + " bytes");
try {
//String uploadedFileName = FileUtil.trimFilePath(uploadedFile.getName());
File uniqueFile = FileUtil.uniqueFile(new File("/home/me/upload"), this.login);
FileUtil.write(uniqueFile, uploadedFile.getInputStream());
FacesContext.getCurrentInstance().addMessage("fileupload", new FacesMessage(
FacesMessage.SEVERITY_INFO, "File upload succeed!", null));
} catch (IOException e) {
FacesContext.getCurrentInstance().addMessage("fileupload", new FacesMessage(
FacesMessage.SEVERITY_ERROR, "File upload failed with I/O error.", null));
}
}
Mój web.xml:
Kod: Zaznacz cały
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>BinaryServlet</servlet-name>
<servlet-class>pl.iwm.tools.BinaryServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>MakeUserBean</servlet-name>
<servlet-class>pl.iwm.tools.MakeUserBean</servlet-class>
</servlet>
<servlet>
<servlet-name>Logout</servlet-name>
<servlet-class>pl.iwm.tools.Logout</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginError</servlet-name>
<servlet-class>pl.iwm.tools.LoginError</servlet-class>
</servlet>
<servlet>
<servlet-name>DeleteAccount</servlet-name>
<servlet-class>pl.iwm.tools.DeleteAccount</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BinaryServlet</servlet-name>
<url-pattern>/BinaryServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MakeUserBean</servlet-name>
<url-pattern>/MakeUserBean</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/Logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginError</servlet-name>
<url-pattern>/LoginError</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DeleteAccount</servlet-name>
<url-pattern>/DeleteAccount</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<web-resource-name>Secured</web-resource-name>
<url-pattern>/faces/www/secured/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/faces/www/loginForm.jsp</form-login-page>
<form-error-page>/faces/www/loginForm.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>user</role-name>
</security-role>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>manager</role-name>
</security-role>
<error-page>
<error-code>403</error-code>
<location>/LoginError</location>
</error-page>
<filter>
<filter-name>Extensions Filter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Extensions Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
</web-app>
Po ciężkiej nocy googlowania nie mogę rozwiązać tego problemu. Znalazłem tylko coś o mapowaniu Faces Servlet. Moje teraźniejsze ustawienia powodują takie coś, że jak uruchamiam konkretnie welcome-file czyli index.jsp wszystko działa poprawnie, linki przenoszą mnie tam gdzie chce itd., oczywiście do czasu wgrania obrazka. Wtedy wszystko się sypie. Gdy startuje projekt otwiera mi się welcome file, ale żaden z linków w nim zawartych nie kieruje mnie tam gdzie powinien. Więc może coś z tym mapowaniem jest źle? Sam nic w tym nie mieszałem, jest takie jakie ustawia się w netbeansie.
Opisywałem problem na innym forum ale bez odzewu. Help
