一般我们都是用jsp+actionForm+acctionServlet的形式录入和保存数据,这对于新建一条记录来说是可以的。那么,我如何修改一条记录呢?我这里是input.jsp?id=1,需要根据id=1来装载已有数据到jsp页面,当然要装载到actionForm里。我现在是在actionForm的reset里装载已有数据的(根据request里的id从数据库读取),但是总感觉有些问题。那么,类似问题一般应该怎么处理?是不是可以在reset里装载?还是有其他更好的方法?
谢谢,在线等待结贴!

解决方案 »

  1.   

    问题是何时何处装载数据?我目前是在actionform的reset方法里装载的,但他在提交时也执行了一次。所以就有问题了。所以,我的问题是:什么时候在什么地方装载数据?
      

  2.   

    public void reset(ActionMapping mapping, HttpServletRequest request) {
    id=new Long(Convert.strToLong(request.getParameter("id")));

    if (id==null||id.intValue()==0) {
    //初始化默认字段
    } else {
    //通过id从数据库读取并装载数据
    }
    }
      

  3.   

    你是要把id=1的数据显示在页面对应的文本框里面吗?
    将对应的form的变量重新赋值,应该就可以了
      

  4.   

    是的。问题是何时赋值?何处赋值?我在reset里赋值,不知道对不对?
      

  5.   

    首先你应该是思想很明确的:
    1)添加时判断主键是否存在,即ID有没有有了就不能添加.没有可以添加
    2)修改判断是否有次记录有的情况下修改此记录.传值时要使用你数据库对应的ID.
      

  6.   

    如果是input.jsp?id=1则表示要修改一条记录,如果是input.jsp,则表示要新建一条记录。我在actionForm.reset里判断是否有id参数,如果有,那就是编辑,则装载数据。
      

  7.   

    是的。问题是何时赋值?何处赋值?我在reset里赋值,不知道对不对?
    可以啊,就是这么做的
      

  8.   

    但是据我调试分析,actionform在页面加载时会reset一次,提交时也会reset一次。第二次reset会影响到已装载的数据。
      

  9.   

    小菜大侠,可以qq聊吗?你qq多少?谢谢
      

  10.   

    个人认为数据的设定不应该是在actionForm里做,而是在action里做。
    如果这样想的话,其实事情很简单。
    input.jsp?id=1
    这个jsp执行之前,总归有个action处理吧,它提交也总归有个action处理吧?
    action里是可以得到id这个参数的,对吧?
    那么好了,告诉你一个歪招,估计不是正统的玩法。
    actionForm的类型 IamActionForm = (actionForm的类型)session.getAttribute(actionForm的名字);
    然后通过id判断你要做什么,通过IamActionForm这个变量,你想干什么都能干什么,当然这个时候actionform的scope是session。以上。
      

  11.   

    肯定不是在RESET方法里面,楼主你的意思是不是说你要添加一条数据到数据库里面去,但是前提是要判断以这个ID在数据库里面是不是也有这样的ID,方便的话QQ聊(注明原因),410406239!
      

  12.   

    我说vc就是提醒你漏掉m你知道在执行reset()和validate()之间会做什么事情吗?
    btw:mvc模式。就是利用struts
    ------------------------
    可笑
      

  13.   

    不用在reset里做
    action里做就可以了
    action会有你的对应的actionForm
    **Form.set***(你想要赋值的变量);
      

  14.   

    你说的这个acton是提交时到达的action,但现在是input页面加载时要初始化actionForm,还没到你说的这个一步。
      

  15.   

    wdman的说法比较接近我的思路。不过我没用这个方法,那会多写一个action(有点懒,呵呵)。我已经解决了,还是在reset里弄的,不过也不是正统的方法。
    谢谢大家了,再等等,如果没人发言,我就结贴了。呵呵。
      

  16.   

    结的好快啊,我刚看到问题。
    下午继续去培训。
    感觉楼主对MVC还不怎么了解,如果楼主想做WEB开发的话,应该仔细看下,不要满足于完成功能,功能一般有好多种实现,关键是那种更好。MVC是一种比较成熟的设计模式,仔细研究吧。
    不说了,去培训了。
      

  17.   

    已经结贴了,呵呵。我还是在reset里处理的,方法笨一些,但能解决问题。wdman的方法也是一个很好的思路。
    谢谢大家。