zoukankan      html  css  js  c++  java
  • Struts 1.x 的不足,导致开发过程为了迁就Struts而变得繁杂

    1. ActionForm这个鸡肋的东西。validate方法的确可以校验form,但是一旦校验失败了,要返回input page的时候,大部分时候input page要能正确显示需要一些object(一般是绑定在request上的),为了满足这个要求,要在form中调用显示input page的那个bean,得到相关的object,然后validate方法才能返回ActionErrors。而且很多HTML控件,比如select,在ActionForm中就要用非常麻烦的数据结构,如字符串数组,collection等。 

    2. Struts的标签库和很多机制对支持“多选项”、“多选择”、“多参数”的时候很麻烦。比如:(1)一个非常简单的要在一个URL上增加多个参数的功能,用JSP写非常简单,第一个参数用?,后面的参数用&即可。但是使用Struts的<html:link>会非常的麻烦,为了要多个参数,可能要预先准备一个collection,太麻烦了。不用这个<html:link>的话吧,也麻烦,因为这个标签支持action属性,用JSP写还要拼URL,而且如果是多module的Struts应用,拼URL都没用(2)form中支持多选的select,要用Struts的标签库的话也非常的麻烦。 

    3. <html:button>居然不支持action,非常的麻烦 

    4. 多module,也是一个非常鸡肋的东西。要在多个module之间切换或是互相调用其中的action,一定要用Struts的SwitchModule,要不就要定义forward。这给很多地方带来了很多麻烦,比如Ajax,要生成一个请求的URL,如果是多module的情况,就非常的麻烦,只能用SwitchModule,但是这个SwitchModule又不能在URL后面带参数,太麻烦了!用forward也不现实,很多地方都要手动拼URL来访问,比如单击一个按钮的时候,触发javascript,但是javascript拼出来的URL访问,无法进入Struts的module。非常的麻烦。 

    5. logic:iterate标签在循环体内,不能取出当前的循环变量的值,从而不能在这个循环体内做很多额外的操作,这就是为什么很多时候界面上的东西要在后台的实体bean中专门开一个字段出来存放,就是为了在logic:iterate中可以直接引用这个字段,实际上,这种字段不应该存在在后台,因为这完全是为了界面而设置的一个字段,在后台数据库或后台程序中根本就没有这个字段。这种代码就应该存在于JSP中,但是由于logic:iterate的不灵活导致了上述的问题。 

    6. html:check标签居然没有一个CHECKED的属性。要手动选中一个checkbox要写javascript
  • 相关阅读:
    webstorm快捷键大全
    Js的reduce()方法
    利用 c# linq 实现多个数据库的联合查询
    微信小程序支付接入注意点
    ubuntu所有php扩展php-7.0扩展列表
    ubuntu 16.04 php 安装curl方法
    Ubuntu下配置Apache开启HTTPS
    Mac下如何用SSH连接远程Linux服务器及Linux一些常用操作命令,更新中.....
    Mac下如何用SSH连接远程Linux服务器
    C#的dapper使用
  • 原文地址:https://www.cnblogs.com/super119/p/1933286.html
Copyright © 2011-2022 走看看