实体类(省略get/set方法)Sport.java
private int id;
private String sportName;
private byte[] image;
private Date createTime;
private String description;业务逻辑方法:SportManagerImpl.java
public void add(Sport sport)
{

this.getHibernateTemplate().save(sport); }Struts Action: SportAction.java
public String sport_addsuccess()
{
boolean b = sm.sportExist(saf.getSportName());//验证
if (b == true)
{
return "sport_addfail";
}
Sport s = new Sport();
s.setSportName(saf.getSportName());  //SportActionForm saf = new SportActionForm();
s.setCreateTime(new Date());
s.setDescription(saf.getDescription());
s.setImage(saf.getImage());
this.sm.add(s); return "sport_addsuccess";
}
jsp页面:(请看上传图片那列文件输入框,和 Form 的 enctype属性有没有出错?)
<form action="sport_addsuccess" method="post" enctype="application/x-www-form-urlencoded" >
      <table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
          <!-- 列表标题栏 -->
      <tr bgcolor="#EFF3F7" class="TableBody1">
      <td width="40%" height="37" align="center"><B>名称:<input type="text" name="sportName"/></B></td>
  </tr>
  <tr>
      <td width="60%" height="37" align="center"><B>描述:<input type="text" name="description"/></B></td>
  </tr>
  <tr>
      <td width="30%" height="37" align="center"><b>创建时间:<input type="text" name="createTime" value="<%=new Date() %>" disabled="disabled"/></b></td>
      </tr>
      
      <tr bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
          <td width="60%" height="37" align="center" colspan="100%"><b>上传图片:<input type="file" name="image" /></b></td>
          
              
      </tr>
      
      <tr>
      <td width="40%" height="37" align="center"><b>
        <input type="submit" name="submit" value="添加" width="25%"/>
           <input type="reset" name="reset" value="重置" width="25%"/></b>
           </td>
          </tr>
      
      </table>
      </form>
最后提交的时候就出现下面的异常了:原因我也知道,就是解决不了,特此求救高手!
ognl.MethodFailedException: Method "setImage" failed for object com.lgp.cms.form.SportActionForm@ed7d11 [java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)]
...........
...........
java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)
...........
expr: image val: [Ljava.lang.String;@4ad14c context: ognl.OgnlContext@aa4306b0 root:[com.lgp.cms.form.SportActionForm@ed7d11, com.lgp.cms.action.SportAction@1f2e41d, com.opensymphony.xwork2.DefaultTextProvider@15e4dbe] value: [Ljava.lang.String;@4ad14c
[Tomcat]2011-07-08 17:55:56,515["http-apr-8080"-exec-5]Could not find action or result
No result defined for action com.lgp.cms.action.SportAction and result input
...........
(我知道是文件存入数据库时候错误,方法不对,但是怎么修正我 的业务逻辑方法呢?)在线等,谢谢!

解决方案 »

  1.   

    上传图片,form表单的enctype应该是multipart/form-data呀,你写的是什么?
    saf.getImage()这个方法返回的是什么?你为什么要把图片存在数据库中?
    到时候取的时候你就很麻烦了,又要重新写入流...
    上传图片的做法都是把图片保存在磁盘上
      

  2.   

    saf.getImage()这个方法返回的是byte[] 型数组。我想把图片存入数据库,然后像其他属性一样作展现的时候能够展现出来。multipart/form-data 和 enctype="application/x-www-form-urlencoded"都可以用作上传的。在这里我的想法是:从本地磁盘把图片作为Sport的一个属性保存到数据库,然后展现,这样就算磁盘发生改变只要数据库没变就能够展现出来。
    像这样的话,你们一般都是怎么干的?能否给点代码?谢谢了...
      

  3.   

    文件存入數據庫時錯誤爲什麽會報
    java.lang.NoSuchMethodException: setImage([Ljava.lang.String;)
    貌似是沒有setImage([Ljava.lang.String;)方法啊
      

  4.   

    4#的兄弟能否给点代码!我是Java新手,不会写啊,多谢了.....