天天看点

WebX实践指南_页面模板(二)VelocityWebX中的扩展

正如前面所讲的,webx中view使用velocity模板引擎来实现的。

velocity中语句都是#开头的,变量的定义都是$开头的 注释代码:## #* *# 模板的引用: #include() #parse()
变量名规范:字母开头,中间可以由下划线、连接符或者数字组成 !的作用是,为空的时候输出为空;如果不加velocity莫波引擎不会解析空的变量
对变量属性的操作间接使用了对象的get/set方法

q: velocity模板变量都是开头的,如何输出var这样的字符?

a: 使用\转义, #set(var="hello");$var=var,对应的$var=hello

q: 单引号双引号区别?

a: 单引号里的变量不会被解析。#literal() … #end可以用与一段代码的中,这样引擎也不会解析其中的内容。

foreach

if elseif else end

逻辑的与或非 ! && ||

stop

#stop 用于停止模板解析

macro

定义宏 #macro(d) #end, 使用宏的时候 #d()

当然宏中可以传递参数 #macro(tablerows colorsomelist)

关于更多velocity的内容参照官网的介绍,这里的说明基本上能满足常见的业务处理,后续会针对velocity模板的处理做专题的说明。

在实际的使用中,velocity语法都是嵌入到html/css/js文件中,其作用主要是实现动态数据的渲染控制。例如,典型的table表处理时,对数据的渲染:

webx中能够很好地支持velocity模板引擎,同时添加了很多的服务支持,这里主要介绍page服务和url服务 。在webx-component.xml文件中有相关的配置:

这方面的资料比较少,后续用到的时候再补全

<code>$page的处理, web.xml page-tool用于处理$page对象</code>

常见的使用方法:

在示例程序中会看到:

这里的$app1link是哪里来的?又有啥作用?现在可以明确的是app1link这个变量肯定不是velocity模板提供的,grep命令看一下,找到对应的代码在uris.xml文件中配置的。仔细看之后发现这里实际上是使用了uribrokerservice。

web由有许多资源组成,比如html文档,图片,视频, css/javascript等。每一种资源都由一种叫做资源标示符(uri)的符号来定位。uri除了出现在web页面上,对于程序员来说,有时也会将它作为字面值常量定义在程序当中。

这类静态录入的uri,在早期的系统开发过程中,的确让程序员屡试不爽。但随着系统功能的不断扩充,复杂性越来越高,静态录入uri使得整套系统变得难以扩展和维护。为了有效解决静态录入uri带来的维护和扩展性问题,uribroker service应运而生。

uribroker service的特点是以统一的配置和动态渲染的方式来生成uri字符串。在系统重构或移植时,你只需要修改uribroker service的统一配置文件 ,无需修改一行代码即可完成全系统uri的无缝迁移。urlbroker service从本质上,解决了uri移植性,扩展性差等问题,同时也简化了开发人员的编码工作量。

常见的使用方式如下: