返回列表 发帖

[Struts] 一个令人费解的问题

问题背景:运用struts实现一个简单的注册功能。
jsp页面中,有爱好这一项,我运用multibox实现,如下:
  1. 爱好:<br>
  2.    上网<html:multibox property="hobbies" value="上网"/>
  3.    旅游<html:multibox property="hobbies" value="旅游"/>
  4.    足球<html:multibox property="hobbies" value="足球"/>
  5.    围棋<html:multibox property="hobbies" value="围棋"/><hr>
复制代码
然后,我在register_61302.Action中,想把多个爱好字符串合成一个字符串存入数据库中。但改了之后,虽然不提示任何错误,但所有注册页面的数据都写不进数据库中了!!!百思不得其解,请各位大侠帮帮忙!
这是可以正常运行的代码。但若将被注释部分加进来(且去掉user.setHobbies(isToGB(register_61302Form.getHobbies()));)的话。便会出现那个费解的情况!
  1. public ActionForward execute(ActionMapping mapping, ActionForm form,
  2.    HttpServletRequest request, HttpServletResponse response) {
  3.   Register_61302Form register_61302Form = (Register_61302Form) form;// TODO Auto-generated method stub
  4.   
  5.   try{
  6.   //生成实体类
  7.   Emailuser61302 user = new Emailuser61302();
  8.   //从form中获取数据
  9.   user.setEmail(register_61302Form.getEmail());
  10.   user.setPassword(register_61302Form.getPassword());
  11.   user.setCity(isToGB(register_61302Form.getCity()));
  12.   user.setEducation(isToGB(register_61302Form.getEducation()));
  13.   user.setAge(register_61302Form.getAge());
  14.   user.setSex(isToGB(register_61302Form.getSex()));
  15.   user.setAddress(isToGB(register_61302Form.getAddress()));
  16.   user.setIntroduction(isToGB(register_61302Form.getIntroduction()));
  17.   //本来想存入所有的爱好,但不知道为什么竟然写不进数据库了。
  18. //Object obj=(register_61302Form.getHobbies());
  19.   //String[] hobbyList=(String[])obj;
  20.   //String hobbies = null;
  21.   //for(int i=0;i<hobbyList.length;i++){
  22.   // System.out.println(hobbyList);
  23.    //hobbies+=hobbyList;
  24.   //}
  25.   //user.setHobbies(isToGB(hobbies));
  26.   
  27.   user.setHobbies(isToGB(register_61302Form.getHobbies()));
  28.   user.setMobile(register_61302Form.getMobile());
  29.   user.setEmailAddress(register_61302Form.getEmailAddress());
  30.   //使用构造器实例化的dao
  31.   Emailuser61302DAO dao= getDao();
  32.   //开始事务
  33.   Transaction tran = dao.getSession().beginTransaction();
  34.   dao.save(user);
  35.   //提交事务
  36.   tran.commit();
  37.   }catch(Exception e){}
  38.   return mapping.findForward("success");
  39. }
  40.   
  41.   public static String isToGB(String src){
  42.    String strRet = null;
  43.    try{
  44.     strRet = new String(src.getBytes("ISO_8859_1"),"GBK");
  45.    }catch(Exception e){
  46.     e.printStackTrace();
  47.    }
  48.    return strRet;
  49.    }
  50. }
复制代码

[ 本帖最后由 ruralcpz 于 2010-4-12 18:45 编辑 ]

提问赏金:6金币
获奖名单 : 还未派发赏金

补充

如果有什么别的更好的方法,能够将jsp中multibox部分的多个字符串存入数据库(我用mysql)的话,也可以告诉我,不胜感激。

TOP

用checkbox就可以了。。我没有用multibox来写过。。放到数据库中,拼一下字符串就可以了
倚楼听风雨,笑看江湖路。。。

TOP

回复 3# heyitang 的帖子

不行啊...我用checkbox了,但仍是那样,不提示任何错误,但写不进数据库!

TOP

TOP

最后还是要靠自己解决问题...是这样的,需要两个,分别为hobbies[]和hobby,在form中都生成getter方法和setter方法,然后让hobbies[]获取jsp页面中的值。用我上面的方法进行合并字符串,到hobby中。然后存入数据库的hobby中。
其实很费事的这么弄是因为数据库中数组类型不好定义,所以我们取巧的利用了数组的优点,使他在action中尽情的工作,最后放入数据库中的还是合并好的字符串!!!

TOP

返回列表