我靠,太郁闷了,Struts这破玩意儿!

1、倒霉的Mysql-front,UTF-8支持太烂!!!!!!!
我这里凡是有中文的行,任何更新都回出错。以前是某些有中文的出错,看来中文支持肯定有问题。而且它的出错提示是德语的,真晕!!!
而且出错以后会奇怪的跳出新窗口,不停,必须用TaskManager关掉它。
我用phpMyAdmin就没有任何问题,很好用。
下午看看这个Mysql-front还有没有救药,如果不行就彻底抛弃。
2、我恨死Struts的ActionForm了!!!!!!!!
昨天我还只是觉得这个东西脱了裤子放屁,多此一举的利害。但是心想不过是浪费一些代码而已。
不过今天我继续发现,这个东西简直就是个隐藏的炸弹。
我本来没有在ActionForm里面写log做记录。心想如果里面发生了exception会抱错,因为我没有写try catch。但是后来我调试一个Action怎么都搞不定,明明在Action里面写了log,却怎么也不输出,我是异常郁闷!
大约浪费了两个小时后,我才明白,我这个Action调用了这个ActionForm,而ActionForm如果property匹配发生错误不会抱错的,也就是说如果那个request里面没有那个property它就会默认为null,而不报错。检查只发生在validate()方法,而这个方法非常恶心,如果发生了错误它会返回input的page,而不会报任何错误!(当然它存了ActionError在session)但是我却在log系统看不到,而且没有exception。就造成了程序中的一个黑洞,我什么都看不到。
而且ActionForm和input Page里面的html:text….那些标记的名称匹配非常费时,根本就不自动化,全部售动写非常容易出错,而且出错还有隐蔽性(没有的peroperty会null,前面说了),而又不能把所有null都到validate()检测,因为有些属性允许null,所以……
我快被ActionForm搞疯了!
所以,我越来越觉得Webwork2中那种Action和Model在一起的方式非常优秀,而且它使用了ongl,model的属性和前端页面通过命名规则自动绑定,省事多了。
所以,可以这么说,费了九牛二虎之力,ActionForm只能浪费时间和精力(Struts本意是使验证变得方便,容易测试),并且实际上测试起来非常困难,绝对是糟粕。记得有人说,既然Struts所有东西里都传了request、session这些东西,那么完全可以舍弃ActionForm,而把数据初始化写到Action里,如xxx=request.getParameter("xxx"),就和JSP里的Scriptlet一个样子,哈哈,不过这样Struts就不再是Struts了,只有形式了。如果伪需求要求必须用Struts,我们可以绕过(不用ActionForm,用request),或者小心点用。所以反过来说就是,我不想用这样的残废了。

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.