TestFormBean 是你提交表单后,表单的属性和该BEAN里面的属性配对,自动填充!TestModelBean 主要是一些和数据处理,比如数据库操作等!
按你说的那样,是因为你还没理解MVC的含义!

解决方案 »

  1.   

    Quote:panzhiwei(panzhiwei008) 
    [
    按你说的那样,是因为你还没理解MVC的含义!
    ]现在对 MVC的含义 的确还不是很明确,但我不明的是,TestModelBean 要与数据库操作的话,也需要从外面把数据放进来才行啊,这样在 TestModelBean 里面不是同样要具有 TestFormBean 的全部属性,然后它才根据这些数据再进行数据库操作吗????
      

  2.   

    从这个出发点,又发现新的问题,由于与数据库操作的是 TestModelBean ,则我查询 Test 的列表时,返回的 List 对象,其对象类型为 TestModelBean,然后我在 Action 中使用  request.setAttribute("TestList", modelBeanObjectList) ,在 JSP 页面中就调用了这个 List ,实际上就是用 TestModelBean 在页面中作数据显示!这种返回方式 与 MVC 是不是错了???按照 MVC 的设计,可以把 TestFormBean 传到 TestModelBean 里面来吗?这样的话,我就可以在返回 List 的时候,将其对象改为 TestFormBean 了,这样在JSP页面就可用 TestFormBean 来显示了?===================================总是有那么一些不明的地方 -_-!!
      

  3.   

    TestModelBean 要与数据库操作的话,也需要从外面把数据放进来才行啊,这样在 TestModelBean 里面不是同样要具有 TestFormBean 的全部属性,然后它才根据这些数据再进行数据库操作吗????回答:的确是这样的!其实思路应该是这样的在ACTION里面给TestModelBean中的各各属性附值,然后调用TestModelBean中的方法(比如数据库入库操作),然后取回结果.在VIEW层显示.
      

  4.   

    Quote: panzhiwei(panzhiwei008)
    [
    其实思路应该是这样的在ACTION里面给TestModelBean中的各各属性附值,然后调用TestModelBean中的方法(比如数据库入库操作),然后取回结果.在VIEW层显示.
    ]在 Action 中给 TestModelBean 赋值(从 TestModelBean的 get方法)这没什么问题,如果 TestModelBean 有 20 个方法,那就要set 20 次?!按照 MVC ,(1)但这个时候可以把 TestFormBean 直接传到 TestModelBean 来吗?这样就不要 set TestModelBean 的属性了?(2)同时,查询的时候,可以在 TestModelBean 里面用 TestFormBean 吗?
      

  5.   

    不需要的,你可以在TestModelBean写一个带20个参数的构造函数,然后在ACTION里用初始化对象就可以了.
    查询的时候不需要用的,你在TestModelBean里用数据库预编语句就可以了!
      

  6.   

    public class TestAction extends Action {
        
            public ActionForward execute(
                    ActionMapping mapping,
                    ActionForm form,
                    HttpServletRequest request,
                    HttpServletResponse response)
                    throws Exception {
            
             TestFormBean testFormBean = (TestFormBean)form;
            
            
             /** ============== 第一种方法 ================= **/
            
             /*调用 TestModelBean 并设置值*/
             TestModelean testModelean = new TestModelean();
             testModelean.setString1(testFormBean.getString1());
             testModelean.setString2(testFormBean.getString2());
             testModelean.setString3(testFormBean.getString3());
             /*20 个 set方法*/
             ...

             /** ============== 第二种方法 ================= **/
    TestModelBean testModelean = new TestModelean();
             testModelean.setTestModelFormBean(testFormBean);
            
            
    TestModelBean.doInsert();        }    }究竟平常上面用哪一种?
      

  7.   

    http://community.csdn.net/Expert/topic/3755/3755067.xml?temp=.4025537
    看看这个帖子,或许有点帮助
      

  8.   

    Quote:hanml(find lost) 
    [
    http://community.csdn.net/Expert/topic/3755/3755067.xml?temp=.4025537
    看看这个帖子,或许有点帮助
    ]那假如现在是用第三种,新建了一个跟ActionForm一模一样的ModelBean,但还有以下问题:我要查询这个 TestFormBean 的一个列表集合 List 的时候,因为查询方法都在 TestModelBean.list() 里面完成并返回一个 List 的对象,那么这个 List 里面的对象又如何从 TestModelBean 转换成 TestFormBean ???用以下方法???List list = TestModelBean.list();
    ArrayList newList = new ArrayList();
    for(int i=0; i<list.size(); i++){
       TestFormBean f = new TestFormBean();
       f.setString1(((TestModelBean)list.get(i)).getString1());
       ....
       ....
       newList.add(f);
    }然后 setAttribute 的是 set newList 而不是 set List ??????是这样做的吗?
      

  9.   

    我也遇到楼主的问题:
    第二种方法, testModelean.setTestModelFormBean(testFormBean);
    在模型层将控制层的组件做为参数,违反了mvc的思想,
    panzhiwei(panzhiwei008) 所说的"你可以在TestModelBean写一个带20个参数的构造函数,然后在ACTION里用初始化对象就可以了."
    那要在action里面定义变量,将从formbean中数据赋给相应的变量,现用变量初始化对象,那要在 action中定义二十个变量?如果不定义,那就是在初始化函数的参数都是formbean.getXXX(),写二十个也好长啊,觉得还不如第一种方法顺眼些呢,