我需要从jsp向action传一List类型对象,jsp是这么写的,应该问题不大:
<%session.setAttribute("fileList","${files}"); %>
action中是这么写的 :
public HttpSession session;
List fileList=(List)session.getAttribute("fileList");
但是运行时action这条语句错误,到底应该怎么写呢?
我试过隐藏字段传不过去,大概只能用session传了。
<%session.setAttribute("fileList","${files}"); %>
action中是这么写的 :
public HttpSession session;
List fileList=(List)session.getAttribute("fileList");
但是运行时action这条语句错误,到底应该怎么写呢?
我试过隐藏字段传不过去,大概只能用session传了。
从请求中得到当前的Session实例..
我发现有好几个障碍都是因为这个问题,我是初学者,边学边做毕设,应该怎么传,希望大家指教
不会用JSTL标签。
Unhandled Exception thrown: class java.lang.NullPointerException
Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at xkjs.action.docmanage.OutputAction.execute(OutputAction.java:70)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at xkjs.utils.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
List fileList=(List)session.getAttribute("fileList");
public HttpSession session = request.getSession();同二楼,变量保存在session中并不能做到“从jsp向action传对象”,它只是起到在不同页面间(一次会话中)维持一组公用变量。
隐藏字段传List好像不行,试过
1。jsp经过(访问时动态)编译后,就成为HttpServlet的派生类,亦即普通的Servlet Class
2。服务器将调用HttpServlet.service()方法,生成HTML格式的页面,返回浏览器
所以首先要知道你想要解决的问题是:
1。从jsp对应的Servlet类向另一个ActionServlet类传递对象?还是:
2。从jsp生成的HTML页面向ActionServlet传递对象?
这两种情况,第一种是在服务器端完成的,第二种是从客户端到服务器。(第二种情况没有直接的解决方法)还是请先把你想要解决的原问题具体说明一下,再看以何种方式解决。
在浏览器页面上点提交后,客户端提交请求到action,action在从Session中取出刚才存放的List。
这两个存、取过程都是在服务器端完成的,List本身也并非由客户端的用户输入,所以可以通过Session来完成。现在程序运行还有问题吗?
HttpSession session = request.getSession();
List fileList=(List)session.getAttribute("fileList");请问到底应该怎么写啊?
<% session.setAttribute("fileList", pageContext.findAttribute("files")); %>上网太久头昏,这个明显的错误一直也没能发现……还有,好像没看到你初始化“files”属性的地方,也就是你在哪里初始化这个文件列表的?把那段代码也贴出来检查一下吧
<c:set var="files" scope="session" value="${files}"/>
files我就是在action里request.setAttribute("files",files);我在下面直接可以显示了呀
<c:forEach items="${files}" var="file">
<tr>
<td><b>${file.fileID}</b></td>
<td><b>${file.fileName}</b></td>
<td><b>${file.fileSort}</b></td>
<td><b>${file.provideSort}</b></td>
<td><b>${file.provideDepartment}</b></td>
<td><b>${file.provideDateString}</b></td>
<td><b>${file.fileRe}</b></td>
</tr>
</c:forEach>
先照你说的改,感谢呀!
楼上的兄弟看看还有那要改吗?
谢谢jshi123()啦!!