ik wil een fileupload met java server faces te maken om studenten uit een tekstbestand te lezen. Ik heb myfaces extensions lib gedownload en toegevoegd, en de taglib "x" voor de fileupload gedeclareerd. ik heb alle overige benodigde jar files ook toegevoegd. ik krijg de fileupload wel op mijn formulier alleen de file in mijn bean setten werkt niet goed. dit is de stacktrace:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
javax.servlet.ServletException: Cannot get value for expression '#{addstudentBean.myFile}'
javax.faces.FacesException: Cannot get value for expression '#{addstudentBean.myFile}'
en dit is mijn bean:
dit is mijn web.xml (belangrijkste gedeelte):
en tot slot mijn faces.config.xml
Ik heb zoveel mogelijk code gepost zodat alle relaties bekeken kunnen worden, mochten daar nog problemen in zitten. ik heb genoeg voorbeelden op internet gezien en overal doen ze het zo dus ik snap niet waarom het bij mij niet werkt. ik hoop dat iemand mij op weg kan helpen. ik vind dit probleem ook nergens terug in forums ofzo, wel genoeg andere problemen.
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
javax.servlet.ServletException: Cannot get value for expression '#{addstudentBean.myFile}'
javax.faces.FacesException: Cannot get value for expression '#{addstudentBean.myFile}'
Java Server Faces:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://myfaces.apache.org/extensions" prefix="x"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Studenten toevoegen</title> </head> <body> <f:view> <h:form id="MyForm" enctype="multipart/form-data" > <x:inputFileUpload id="myFileID" value="#{addstudentBean.myFile}" storage="file" required="true" /> <br><br> <h:commandButton value="Versturen" action="#{addstudentBean.addStudents}" /> </h:form> </f:view> </body> </html> |
en dit is mijn bean:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| package beans; import java.io.*; import org.apache.myfaces.custom.fileupload.UploadedFile; public class addstudentBean{ private UploadedFile myFile; public addstudentBean(){ } public String addStudents(){ try { if (myFile != null){ String studentname; int studentnr; BufferedReader in = new BufferedReader(new InputStreamReader(myFile.getInputStream())); String regel=null; while((regel=in.readLine())!=null) { String[] sar = regel.split(";"); studentnr = Integer.parseInt(sar[0]); studentname = sar[1]; System.out.println("nr = " + studentnr + " - naam = " + studentname); } in.close(); } return "success"; } catch (Exception e) { System.out.println("Fout: " + e.getMessage()); return "fail"; } } public UploadedFile getMyFile() { System.out.println("getMyFile"); System.out.println("naam = " + myFile.getName()); System.out.println("size = " + myFile.getSize()); return myFile; } public void setMyFile(UploadedFile myFile) { System.out.println("setMyFile"); this.myFile = myFile; } } |
dit is mijn web.xml (belangrijkste gedeelte):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <filter> <filter-name>ExtensionsFilter</filter-name> <filter-class> org.apache.myfaces.component.html.util.ExtensionsFilter </filter-class> <init-param> <param-name>uploadMaxFileSize</param-name> <param-value>10m</param-value> </init-param> <init-param> <param-name>uploadThresholdSize</param-name> <param-value>100k</param-value> </init-param> </filter> <filter-mapping> <filter-name>ExtensionsFilter</filter-name> <servlet-name>*.jsf</servlet-name> </filter-mapping> |
en tot slot mijn faces.config.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| <faces-config> <navigation-rule> <from-view-id>/addstudent.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/success.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/addstudent.jsp</from-view-id> <navigation-case> <from-outcome>fail</from-outcome> <to-view-id>/fail.jsp</to-view-id> </navigation-case> </navigation-rule> <managed-bean> <managed-bean-name>addstudentBean</managed-bean-name> <managed-bean-class>beans.addstudentBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <application> <locale-config/> </application> <factory/> <lifecycle/> </faces-config> |
Ik heb zoveel mogelijk code gepost zodat alle relaties bekeken kunnen worden, mochten daar nog problemen in zitten. ik heb genoeg voorbeelden op internet gezien en overal doen ze het zo dus ik snap niet waarom het bij mij niet werkt. ik hoop dat iemand mij op weg kan helpen. ik vind dit probleem ook nergens terug in forums ofzo, wel genoeg andere problemen.