代码改变世界

关注WebWork(二)

2005-11-10 18:22  FantasySoft  阅读(4347)  评论(3编辑  收藏  举报

        时间过得真快,重新关注WebWork已经有一个多月了,那篇极具潜力的Post——WebWork初体验也终于如我所愿,爬上了阅读排行榜的榜首,而《WebWork In Action》的翻译工作也进行到了第三章。在这段时间里,我收到了不少朋友热情的回复以及诚挚的建议,在这里向各位表示我最衷心的感谢了! //Bow~~~ OK,鞠躬完毕,我要继续耍嘴皮子了,各位朋友准备豆腐板砖啦!:)
        《WebWork In Action》第二章的内容比较简单,作者通过最为经典的HelloWorld例子入手,将读者引入WebWork的世界。
例子的讲述采用Step By Step的方式,内容全面而具体,从下载WebWork到典型的Web Application的Layout,从具体标签的讲述到甚至一些诸如服务器访问的端口号等简单问题都有所提及,切实地从初学者的角度进行考虑,降低了初学者入门的难度。对于WebWork的初学者而言,这一章是很好的参考资料。在翻译第二章的过程中,还发现老外写技术文章的特点就是针对一个重要的概念,会反复不断地讲述,不断地强调,以强化读者对概念的理解。
        说完了赞誉的话,就要开始批评了。首先是书中的代码还是出现了遗漏,在讲述高级控制流一节中,作者采用了代码渐变的
方式讲述,但是代码变着变着,就把一个方法给漏了:在[ 2.6.1 Taking advantage of ActionSupport ]这一节中,Listing2.2仍然需要getName方法的,否则就没有实现书中所说的以下功能了:当用户输入错误之后,返回input页面,文本框中会将用户之前输入的内容显示出来。事实上,getName这个方法在2.4节中就有定义了。鉴于Listing2.2给出的是完整的代码而非代码段,缺少了getName是不妥的;
        第二个问题则是JSP中所使用的WebWork自定义标签的问题。在[ 2.6.3 Exploring the UI tag library ]这一节中,给出的
代码是这样的:

<%@ taglib prefix="ww" uri="webwork" %>
<html>
  
<head>
    
<title>Enter your name</title>
  
</head>
  
<body>
    
<ww:form action="helloWorld">
      
<ww:textfield label="Please enter your name:" name="name"/>
      
<input type="submit"/>
    
</ww:form>
  
</body>
</html>

大家可以看到<ww:textfield>标签中给label和name赋值的时候,只用了双引号。而我依葫芦画瓢去试验这段代码的时候,结果生成的HTML是错误的,输入框的name属性的值为空,form的action也不见了。后来依照WebWork2.1.7提供的Example,我在双引号中加上了单引号,代码变成这样:<ww:textfield label="'Please enter your name:'" name="'name'"/>,错误消除了。现在我知道双引号加单引号的方式是正确的,但我并不能肯定只用双引号的方式一定是错的,毕竟我搜索到的很多例子都是直接使用双引号,哪位朋友对这个比较清楚的,请指点迷津。
        第三个问题还是离不开WebWork的自定义UI标签。看着WebWork的自定义的UI标签,我不得不想到了那个扶不起的阿斗。因为我没有想到时隔一年,WebWork的UI标签库还是没有什么长进。个人对WebWork标签库的评价就是:除了if、property、iterator标签之外,其他与UI相关的标签就是鸡肋,食之无味,弃之可惜。在去年的一篇Post中,我曾经提到了WebWork的UI标签无法直接应用CSS,而这个问题至今仍然没有解决,这不得不让我失望了。同时,我在想,是不是还有其他开源项目改进了WebWork的UI标签呢? 然而我在Google上搜索了半天,也没有找到相应的资源。
        褒与贬都说完了,欢迎各位说说自己的见解,也欢迎多多批评。

       PS:文中提出的问题已经得到解决,有兴趣的朋友请阅读:关注WebWork(三)