`

给国人的CTE的一些建议

    博客分类:
  • java
阅读更多
非常好的项目,首先他是中国人开发的,太棒了!
http://www.commontemplate.org/zh/index.html
自家人提点意见和建议
1. 不可以函数调用
禁止函数调用,避免在模板中引入业务逻辑。(允许配置开启非void函数调用)

看了这条,我便不打算使用CTL
因为我每天都在使用freemarker,freemarker中不能调用static 函数的问题,让人很气愤。CTL居然直接不能调用函数,太费解了。
$for(user:UserFunc.usersOf(group))
...do something with user info...
这种事情,很常见
除此之外,很棒

我想CTL是一个模板语言,而不是一个编程框架,所以“避免在模板中引入业务逻辑”这不是模板语言应该关心的事情,而是框架开发者应该关心的事情。但作为一个潜在需求,可以这样定位:
“可以调用函数以及静态函数,也可以声明‘禁止’函数调用,以避免在模板中引入业务逻辑”

2.freemarker的空值处理,很讨厌,动辄大堆异常,NullPointException在模板语言甚至在脚本语言中都显得不太必要,但空值判断很有必要。如:
user!'user not defined',在user为空时可以方便的定义空值的显示,
另外三元运算符也很需要,如:
(user.id==1)?'id=1':'id<>1'
user??user.name:'not defined'
分享到:
评论
5 楼 javatar 2008-01-22  
二十一 写道
对strut2标签的支持的方案确定下来没有?


谢谢你的关注,strut2标签集的支持,已经在实现,参见:
http://javatar.iteye.com/blog/158433
4 楼 二十一 2008-01-19  
对strut2标签的支持的方案确定下来没有?
3 楼 javatar 2008-01-19  
CT支持宏指令, 并且宏指令的调用方式与普通指令一致: (无特殊语法)
定义:
$macro{"mybutton"}
<input type="button" name="${name}" value="${value}" class="mybutton"/>
$end
调用:
$mybutton{name: "done", value: "完成"}


CT中也支持参数回传,$inner指令相当于FreeMarker中的#nested。
并且CT中约定以"_block"结尾的宏为块指令:
定义:
$macro{"mytable_block"}
<table id="${id}" class="mytable" border="0">
    $inner{back : "backtest"}
</table>
$end
调用:
$mytable_block{id: "table1"}
   <tr><td>${back}</td></tr>
$end


这篇blog简单的说了宏重构的思路:
http://javatar.iteye.com/blog/152492

另外,CT还支持模板继承,在处理layout时比宏更方便,可以看Demo:
http://www.commontemplate.org/zh/demo_extends.html
2 楼 jasongreen 2008-01-17  
good, 默认的是 禁止调用void函数喽

那静态函数的调用,如何处理呢

还有freemarker中有macro,我觉得很棒,CT中有吗?
1 楼 javatar 2008-01-17  
函数调用默认禁用是有意义的,
允许配置开启非void函数调用,只要配置:
functionAvailable=true
而返回类型为void的函数,通常是有副作用(修改状态)的,契约式设计原则也强调这一点,
如果允许调用void的函数,那就变成JSP了,什么都能干,页面与业务逻辑混杂一团。

CT对null的处理是友好的,
null的任何未定义属性都为null,如:${null.name}
任何对象的null属性都为null,如:${user.null}
null的null属性也为null,如:${null.null}
null值默认不输出,如:${null}
可以配置:
defaultNullValue=xxx
当遇到null值输出时将以配置值取代之。
你也可以扩展null的属性,如:给null加一个toString属性
${null.toString}

对空的判断是支持的:
${user == null}

三目运算也是支持的:
${(user.id == 1) ? 'id=1' : 'id<>1'}
${user ? user.name : 'not defined'}
或者用:
${user.name || 'user not defined'}
因为or运算支持javascript风格的非空判定。
如果user为null,null.name依然为null。

注:所有Java表达式支持的操作符全部支持。

相关推荐

    sql写法_CTE

    ### SQL中的CTE(公用表表达式)详解 在数据库操作中,经常需要处理复杂的查询逻辑,特别是当涉及到多表连接、嵌套查询时。为了提高SQL查询的可读性和可维护性,引入了CTE(Common Table Expression,公用表表达式...

    Laravel开发-laravel-cte

    在Laravel中,递归CTE的实现稍微复杂一些,因为需要嵌套多个`DB::raw()`: ```php $cte = DB::raw(" WITH RECURSIVE department_tree AS ( SELECT id, name, parent_id FROM departments WHERE id = :rootId ...

    SQL SERVER的CTE用法

    接着插入了一些数据,例如不同尺码的羊羊鞋和XX衬衫。 CTE的使用开始于`WITH`关键字,定义了一个名为`cte`的公共表表达式。这个CTE的作用是找出每个产品名称对应的最小尺码,然后通过递归的方式将所有小于最小尺码...

    MSSQLSERVER递归查询CTE

    MSSQLSERVER递归查询CTE,以一个实例详细介绍CTE的初始查询、递归查询、终止条件并分步骤图文并茂的进行讲解

    华三H3CTE最新笔记

    华三H3CTE最新笔记

    CTE-650数位板驱动

    bamboo CTE-650数位板驱动.下载后直接点解安装即可。

    工程计算/转换工具cte v1.4源码(以此为准)

    《cte v1.4源码解析:电阻串联计算与应用》 在电子工程领域,电阻的串联和并联计算是基础且重要的概念。本文将深入解析“cte”工具的1.4版本,该工具专门用于进行电阻串联凑阻值的计算。通过理解其源码,我们可以更...

    SQL Server CTE 递归查询全解1

    如果层次结构很深,建议通过`WHERE`子句限制递归深度,避免使用`MAXRECURSION 0`,以免意外进入无限循环。在生产环境中,务必监控和控制递归查询,确保它们不会导致系统资源耗尽。 总结来说,SQL Server的CTE递归...

    h3cte十月份考题

    - **拓扑结构**:本题给出了一种典型的网络拓扑结构,包含了总部、一级分部和二级分部之间的连接关系。 - **具体需求**:明确了不同业务流在不同路径上的选路策略,例如“业务A选路到二级分部业务ASW3-SW1-RT1-RT3”...

    H3CTE培训文档

    H3CTE培训胶片,完全符合考试大纲,内容完全依照华三内部发行书籍

    H3CTE认证培训大纲

    描述H3CTE认证考试大纲的主要内容:1、培训项目说明;2、课程描述。

    H3CTE模拟实验PPP

    在H3CTE(Huawei Certified Network Expert)认证考试中,PPP是重要的一部分,因为它涉及到网络设备间的通信配置和故障排查。 PPP协议的主要组成部分包括链路控制协议(LCP)、网络层控制协议(NCP)以及扩展协议。...

    wacom cte630数位板驱动 v5.3.5 官方最新版

    wacomcte630驱动是专为非凡复刻版CTE-630打造的数位板驱动程序,数位板要想正常的与电脑进行连接并画图,就需要安装该驱动程序进行激活,欢迎有需要的朋友下载使用!wacomcte630数位板参数简介感应方式电磁式压感...

    sqlserver 2005 使用CTE 实现递归

    ### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...

    [sql server] SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL

    SQL Server 2005 中使用公用表表达式(CTE)简化嵌套 SQL SQL Server 2005 中的公用表表达式(CTE)是一种强大的工具,可以简化嵌套的 SQL 语句,提高代码的可维护性和性能。本文将介绍 CTE 的基本概念、语法和使用...

    h3cte教材。。。。。。。

    h3cte。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    H3CTE最新题库,走过不要错过

    H3CTE题库最新,

    H3CTE认证教材PPT版本2.1

    H3CTE认证教材PPT版本2.1,《网络故障诊断与排除V2.1》

    [sql server]SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用.doc

    "SQL Server 2005 杂谈:公用表表达式(CTE)的递归调用" 本文主要介绍了 SQL Server 2005 中公用表表达式(CTE)的递归调用,用于解决树型结构数据的查询问题。CTE 是 SQL Server 2005 中的一种新的查询方式,它...

Global site tag (gtag.js) - Google Analytics