我需要从jsp向action传一List类型对象,jsp是这么写的,应该问题不大:
<%session.setAttribute("fileList","${files}"); %>
action中是这么写的 :
public HttpSession session;
List fileList=(List)session.getAttribute("fileList");
但是运行时action这条语句错误,到底应该怎么写呢?
我试过隐藏字段传不过去,大概只能用session传了。

解决方案 »

  1.   

    jsp向action传一List类型对象??不太理解.为什么要这么做?你是不是在用STRUTS,如果是的话.也应该从Action中获得数据,然后保存到Session.或者Request域中,然后,由Action重定向到某JSP页面,最后在JSP页面取出数据,并显示.当然,你要确保HttpSession session = request.getSession();
    从请求中得到当前的Session实例..
      

  2.   

    我是先得到数据在JSP显示,然后将显示的数据用Excel导出,需要将List类型对象从JSP传到负责导出的Action中。
    我发现有好几个障碍都是因为这个问题,我是初学者,边学边做毕设,应该怎么传,希望大家指教
      

  3.   

    files是不是本身就是一个session的attribute,你可以试一下。
    不会用JSTL标签。
      

  4.   

    用session试过几次,都不行,感觉session声明的地方就不对,session是作为类的属性呢?还是execute方法的参数呢?
      

  5.   

    信息: Reloading this Context has started
    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)
      

  6.   

    上面是错误信息,at xkjs.action.docmanage.OutputAction.execute(OutputAction.java:70)对应的代码是
    List fileList=(List)session.getAttribute("fileList");
      

  7.   

    session 没有赋值,二楼已有正解:
    public HttpSession session = request.getSession();同二楼,变量保存在session中并不能做到“从jsp向action传对象”,它只是起到在不同页面间(一次会话中)维持一组公用变量。
      

  8.   

    哦,那到底怎么才能从jsp向action传对象?急切的想知道
    隐藏字段传List好像不行,试过
      

  9.   

    用application能不能从jsp向action传对象?
      

  10.   

    严格说“从jsp向action传对象”并非很专业的提法:
    1。jsp经过(访问时动态)编译后,就成为HttpServlet的派生类,亦即普通的Servlet Class
    2。服务器将调用HttpServlet.service()方法,生成HTML格式的页面,返回浏览器
    所以首先要知道你想要解决的问题是:
    1。从jsp对应的Servlet类向另一个ActionServlet类传递对象?还是:
    2。从jsp生成的HTML页面向ActionServlet传递对象?
    这两种情况,第一种是在服务器端完成的,第二种是从客户端到服务器。(第二种情况没有直接的解决方法)还是请先把你想要解决的原问题具体说明一下,再看以何种方式解决。
      

  11.   

    基本概念我不太理解,需要的具体流程是,先得到从action中数据在JSP页面(可能是你说的HTML页面)显示,然后需要将显示的数据用Excel导出,这就需要将List类型从JSP页面传到负责导出的Action中,就是第二个传的过程我不会。
      

  12.   

    按照你描述的情况,你采用的方法是正确的,程序也没错。实际上是JSP页面得到一个List,保存在Session中,然后生成用于客户端显示的HTML页面。
    在浏览器页面上点提交后,客户端提交请求到action,action在从Session中取出刚才存放的List。
    这两个存、取过程都是在服务器端完成的,List本身也并非由客户端的用户输入,所以可以通过Session来完成。现在程序运行还有问题吗?
      

  13.   

    有啊,在Action里我写了这样的代码,但是得到list为null啊
    HttpSession session = request.getSession();
    List fileList=(List)session.getAttribute("fileList");请问到底应该怎么写啊?
      

  14.   

    不是得到null,是提示List fileList=(List)session.getAttribute("fileList");这句代码是错误的
      

  15.   

    发现一个错误,jsp 中的语句应写成:
    <% session.setAttribute("fileList", pageContext.findAttribute("files")); %>上网太久头昏,这个明显的错误一直也没能发现……还有,好像没看到你初始化“files”属性的地方,也就是你在哪里初始化这个文件列表的?把那段代码也贴出来检查一下吧
      

  16.   

    .jsp我没有初始化呀,是不是要这样:
    <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>
    先照你说的改,感谢呀!
    楼上的兄弟看看还有那要改吗?
      

  17.   

    files传过去了,谢谢!!!!我想同时好几个问题也一起能解决了!!
    谢谢jshi123()啦!!