别人都说Struts能是代码和页面完全分析,但我怎么觉得没有分离啊?因为Action类中,还是用到了<input name="as">中的as来当做属性

解决方案 »

  1.   

      你页面中name属性为as的控件,在action中获取值的时候不用request....而是生成as的get,set方法,在提交表单的时候,程序会自动在后台搜索name属性为as的get,set方法并赋值。
      

  2.   

    分离难道就不能交互了么?action只是根据name拿到相应的参数而已。看来你对松耦合理解不到位啊。
      

  3.   

    自动搜索???
    public TestAction extends Action
    {
      private String as;
      <font color="red">
      public void setAs()
      {
      }
      public String getAs()
      {
      }
      </font>
      public String execute()
      {
      }
    }
    我假如没有as这个属性行吗?
      

  4.   

    拦截器!前台请求会将as=XX添加到url后面(前提是你用get方式提交)。进入action之前会被参数拦截器拦截到,然后对比action里面的属性,然后再调用action 中as的setAs();方法。没有肯定是不行的。但是如果你要说没有as就不行就说明jsp跟action耦合了,我也没话说了!
      

  5.   

    呵呵,我就是觉得我要是把页面中的 name="as"改为别的话,那action中的也必须修改
      

  6.   

    不用啊。你换个action不行么?action1专门处理name=as的,action2专门处理你说的别的的....。这个难道不是分离么?我action跟jsp就没有任何关系。我就是处理name=as的。你想跟我交换信息你就对接过来,接口就是你要有个name=as的参数。明白了么?
      

  7.   

    肯定会有联系的,不联系你页面中的参数怎么能自动set到相应的属性中。
      

  8.   

    我一直觉得,所谓的渲染和逻辑分离,就是数据获得、处理与如何显示的分离。即数据从数据库取出,进行运算、组合,包装,最后交给渲染层渲染,渲染层只负责将得到的数据按照一定格式和位置展示出来。
    因此我觉得jsp与servletClass在正确使用下就已经做到了分离,struts2就更不用说了。
    楼主可以想一想,如果我在视图层把一个list以另一种方式展现,如果我把这个list的数据获得方式由数据库改成文本文件,这两个修改中的任何一个,是不是都会涉及到视图层与逻辑层都改??
    至于楼主所说的页面端表单元素要和Action中对应,这好像是没办法的事,我觉得分离的前提是规范,是接口,而不是毫无约束的绝对松耦,比如一个登录页面有name、pwd两个元素,那么所有可以处理这两个元素的Action理论上都可以为这个视图服务,这也算是分离了。