本人在学习李腾飞的CMS视频,在进行文章附件上传时遇到了问题:
public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取参数值
Article article = new Article();
try {
article = (Article) RequestUtil.copyParams(Article.class, request);
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 从request中获得上传文件的有关信息
Attachment[] attachments = (Attachment[]) request.getParameterMap().get("attachs");
if (attachments != null) {
for (Attachment atta : attachments) {
System.out.println((atta).getName() + ",已经被上传,文件类型是:" + (atta).getContentType());
}
}
article.setCreatetime(new Date());
articleDao.addArticle(article); request.getRequestDispatcher("add_article_success.jsp").forward(request, response);
}
下面这一句给出的错误提示是:不能进行类型转换 Cannot cast from String[] to Attachment[]Attachment[] attachments = (Attachment[]) request.getParameterMap().get("attachs");因为我都是按照视频上讲的一步一操作的,我实在不知道哪里出了问题请各位给指点一下

解决方案 »

  1.   

    打印request.getParameterMap().get("attachs");来看是什么
      

  2.   

     request.getParameterMap().get("attachs");获得的是Object类型的数据,你要强转成数组类型当然会报错啊。。
      

  3.   


    但是这行代码我是照着视频上敲的呀//从request中获得上传文件的有关信息
    Attachment[] attachments = (Attachment[])request.getParameterMap().get("attachs");
    if(attachments != null){
    for(Attachment atta : attachments){
    System.out.println(atta.getName()+",已经被上传,文件类型是:"+atta.getContentType());
    }
    }
      

  4.   

    用spring mvc 或者struts 框架上传文件。 很简单呀。 
      

  5.   

    request.getParameterMap().get("attachs");
    你前台给的数据map中名为attachs的值不是Attachment数组,而是String数组,当然转不了啦
      

  6.   

    这个问题我已经发现了
    在Java EE 5当中,getParameterMap()的返回值是Map,没有做强制规定
    而在Java EE 6 中,getParameterMap()的返回值java.util.Map<java.lang.String,java.lang.String[]>,API做了强制的限制,但是如何将String[]转换成Attachment[]呢?