`

关注WebWork(三)

阅读更多

        在昨天所写的关注WebWork系列的第二篇中,留下了一个问题:在使用WebWork自定义UI标签的时候,为标签的属性赋值是否要加上单引号。现在这个问题有了答案。在讲述这个问题之前,我不得不再次为自己不严谨、不细心做一个自我检讨,但愿下次不要在犯这样的错误了。
        其实,这个问题的解决方法很简单,书中的代码也没有问题,而且我使用的单引号方式也没有错。让我迷惑的根本原因是我漏掉了webwork.properties这个配置文件,而且在这个配置文件有一个非常重要的属性:webwork.tag.altSyntax。书中代码没有包含单引号是因为这个属性值设为了true,而我没有设置这个属性值,所以在自己的代码中不加单引号便会出现错误,加上单引号才能得到正确的结果。说到这里,我还得再次鄙视一下自己的粗心,书中的[ 2.2.3 Creating the webwork.properties configuration file ]一节中就把这个配置要求讲得很清楚了,但是我却把这个遗忘了,真的该挨板砖了。现在问题解决了,但是这个属性值代表了什么意思呢?
        从webwork.tag.altSyntax的字面上看,这个属性与tag相关,而且altSyntax中的alt就是alternative的意思,那么与Syntax合在一起,就应该表示另外一种可供选择的语法了。在查阅了相关文档,包括《WebWork In Action》的第三章之后,对这个属性有了比较全面的认识。在WebWork2.1.7中,altSyntax的default值为false,在这种情况下并不支持新的语法。那么在旧的语法中,如果要为标签的某一属性设置String类型的值,就必须给这个值加上单引号了,这是由WebWork所支持的OGNL语法决定的。如果你不使用单引号将用以赋值的value括起来的话,那么这个value将会被认为是存在于Value Stack的Object所对应的key,在标签被parse的过程中,就会以这个value为key到Value Stack中找对应的内容,结果是可想而知的了——找不到,因为你根本就没有往Value Stack中增加这样的键值对。以昨天的Post中的代码为例:
         <ww:textfield label="Please enter your name:" name="name" />
在旧的语法体系里,textfield标签被parse的过程中,label的值"Please enter your name:"会被当作是一个Key,从Value Stack中找相应的内容,并返回找到的内容作为label属性的值。这很明显是拿不到具体的值的,最后将会返回一个空字符串。这正好与昨天出现的错误情况是吻合的。为了直接给label设置String值,我们就要使用单引号将具体的String值括起来了。这样的语法确实很灵活,你可以让JSP拥有更多的动态性,但是不好的地方也很明显,页面将会充斥着单引号和双引号的混合体,代码将难以维护。于是,新的语法被提了出来:使用%{...}来指明某一个部分需要到Value Stack中取值,这样就可以将多余的单引号去掉了。为了使用新的语法,我们就必须将altSyntax设为true。这一点在WebWork2.1.7的使用过程中,尤为需要注意的。
        最后再强调一点,在WebWork2.2中,将会全面启用新的语法,也就是altSyntax的默认值为true了,甚至压根就会把这个属性值给去掉。所以,大家还是应该以新的语法为准,而且新的语法会更好用,你说呢?
   
        昨天的Post中,我还提到了WebWork的UI标签无法直接应用CSS,得出这个结论也真的该被打PP了。其实,想应用CSS到UI标签中,譬如textfield,是可以的,只是属性名从style变为了cssStyle,class变为了classStyle。[1] 看来,我是错怪WebWork的UI标签了。不过,话也说回来,为什么要将这两个属性名改掉呢?
        光棍节的WebWork关注报道就到这里,我们下次再会。:) 

       [1] Textfield tag in WebWork

分享到:
评论

相关推荐

    webwork in action

    - **UI组件**:第十一章关注于如何使用WebWork提供的UI组件来简化前端开发过程,提高用户体验。 #### 五、高级主题 - **类型转换**:第十二章介绍了WebWork中的类型转换机制,帮助开发者处理表单提交的不同数据...

    Spring+hibernat+webwork2整合例子

    在这个例子中,我们关注的是将Spring、Hibernate和WebWork2这三个强大的框架整合在一起。这三者分别是Spring作为应用的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,Hibernate作为ORM...

    webwork+spring+hibernate 开发资料

    Spring可以通过其Action代理来管理和控制WebWork的动作,同时Spring的AOP特性可以用于处理如日志记录、事务管理等跨切面关注点。 Spring与Hibernate的整合则主要体现在数据访问层。Spring提供了HibernateTemplate或...

    Webwork+spring+hibernate集成实例

    Webwork、Spring和Hibernate是Java开发中的三大框架,它们各自在不同的层面上为应用程序提供服务。Webwork负责处理用户交互,Spring提供依赖注入和管理事务,而Hibernate则专注于对象关系映射(ORM),使得数据库...

    spring+hibernate+webwork相关配置

    标题 "spring+hibernate+webwork相关配置" 指的是一个集成开发环境的配置,其中涵盖了三个关键的技术框架:Spring、Hibernate和WebWork。这些框架在Java Web开发中非常常见,主要用于实现依赖注入、持久化管理和MVC...

    webwork

    - `lib`:存放WebWork运行所需的第三方库。 - `src`:源代码目录。 2. **部署Web容器**:这里以Tomcat 4.1为例,安装并配置好Tomcat环境。 3. **配置ClassPath**:将WebWork核心库以及`lib\core`目录下的所有`....

    WebWork.Spring.Hibernate整合开发网络书城

    《WebWork.Spring.Hibernate整合开发网络书城》这个主题涵盖了三个关键的技术框架:WebWork、Spring和Hibernate。这些技术在现代企业级Java应用开发中扮演着至关重要的角色,特别是对于构建复杂的、数据驱动的Web...

    webwork+spring+ibatis简单实例

    在IT行业中,Web开发是一个广泛讨论的话题,而`webwork`、`spring`和`ibatis`是构建高效、灵活的Web应用的三大组件。这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的...

    WebWork+Spring.+Hibernate整合开发网络书城代码

    在"WebWork+Spring+Hibernate整合开发网络书城代码"项目中,"bookstore"可能是一个完整的示例应用,展示了如何利用这三大框架来创建一个在线书店。这个项目可能包含以下关键组件: 1. **Controller层**:使用...

    spring+ibatis+webwork框架搭配

    本文将深入探讨如何结合使用Spring、Ibatis(现称为MyBatis)以及WebWork这三个流行的Java开发框架来构建高效的应用程序。具体而言,我们将重点关注如何配置这些框架以实现良好的集成效果,并特别关注在Oracle数据库...

    WebWork.Spring.Hibernate整合开发网络书城全系列视屏4

    在IT行业中,WebWork、Spring和Hibernate是三个非常重要的开源框架,它们分别专注于Action层、应用层管理和持久层处理。本资源"WebWork.Spring.Hibernate整合开发网络书城全系列视屏4"提供了针对初学者的教程,通过...

    struts1,struts2,webwork,线程安全问题

    综上所述,Struts1、Struts2和WebWork这三个框架都面临着线程安全问题,但在Struts2中这个问题得到了较好的解决。Struts2通过使用“prototype”作用域管理`Action`实例,有效地避免了线程安全问题。而对于Struts1和...

    Hello World the WebWork way

    - **步骤三**:配置Action和Result - **配置文件**:在WebWork中,需要通过配置文件(如`struts.xml`或`webwork.xml`)来指定哪些URL映射到哪个Action类以及Action执行后的Result。 4. **HelloWorld.java代码解析...

    webwork spring hibernate整合实例源代码

    WebWork、Spring 和 Hibernate 是Java Web开发中三个非常重要的开源框架。它们分别负责Action层、IoC(Inversion of Control,控制反转)/AOP(Aspect Oriented Programming,面向切面编程)以及持久化管理。将这三...

    webwork spring hibernate

    在IT行业中,WebWork、Spring和Hibernate是三个非常重要的开源框架,它们分别专注于Web应用程序的交互层、业务层和服务层。下面将详细解释这三个框架的核心功能、如何协同工作以及它们在构建企业级Java应用中的作用...

    webwork快速入门

    **WebWork 2**则主要关注于HTTP请求和响应的处理,通过**ServletDispatcher**将HTTP请求转换为具体的Action操作,同时支持多种视图表示形式,如JSP、Velocity、FreeMarker等。 #### 二、WebWork安装与HelloWorld...

    webwork+spring+hibernate网络购物系统

    这个系统利用了WebWork、Spring和Hibernate这三个关键的技术框架,构建了一个完整的、功能丰富的在线购物平台。WebWork提供了MVC(模型-视图-控制器)架构,Spring则为系统提供了依赖注入和面向切面编程的能力,而...

    WebWork in Action

    WebWork的核心概念包括三个主要部分:动作(Actions)、结果(Results)和拦截器(Interceptors)。 - **动作(Actions)**:这是应用程序的核心组件,通常是由POJOs或继承自`ActionSupport`的类组成。每个动作负责执行特定...

    WebWork+Spring+Hibernate整合开发网络书城 第4讲

    首先,让我们关注WebWork。WebWork是一个轻量级的MVC(模型-视图-控制器)框架,它简化了Web应用的开发,提供了强大的动作和事件处理机制。在第4讲中,你将学习到如何创建WebWork动作类,处理用户请求,并通过配置...

Global site tag (gtag.js) - Google Analytics