hellolift学习笔记(1)

最近在学习scala,大致的学习了一下scala语法后,开始学习liftweb,希望通过对liftweb的学习来带动对scala的进一步深入。学习liftweb的过程也同样,大致浏览一下《The Definitive Guide To Lift》后,下载了liftweb的官方例子,通过对例子的学习来进一步消化书中的内容。
按照看的顺序把学习到的东西记录下来,留备以后复习 :wink:

1.入口
入口还是index.html,不过被LiftFilter所过滤处理,filter的定义依然在web.xml中。
index.html的内容被surround标签包含

<lift:surround with="default" at="content">
...
</lift:surround>

这是lift中Rendering with Templates 的语法,通过这个tag把页面的内容和模板组合在一起。with指定使用的模板名称,模板位于webapp\templates-hidden目录下,在这个目录下可以找到default.html。 at指定了本页内容位于模板中的位置,在模板文件中能找到下面代码

<lift:bind name="content" />

这个代码在渲染过程中会被本页内容所替代。

关于Rendering with Templates 在《The Definitive Guide To Lift》的第三章(P28)有详细说明

2.snippet
在index.html中有以下代码

<p><lift:hello_world.howdy /></p>

这是lift的snippet标签(在《The Definitive Guide To Lift》的第三章(P31)有详细说明),snippet语法可以用多种写法,这里使用的

<lift:Class.method form="..." multipart="..." />

所以这里的class是hello_world,method是howdy,那么在哪里查找这个类呢?
在bootstrap\liftweb\Boot.scala这个类中有这样的代码

// add the com.hellolift package to the list packages
// searched for Snippets, CometWidgets, etc.
LiftRules.addToPackages("com.hellolift")

所有的snippets都在这个包的子包中查找,即com.hellolift.snippet,在这里我们可以找到HelloWorld.scala,类名的 camel case 会转化为title case

在HelloWorld.scala可以找到howdy方法的定义

def howdy = <span>Welcome to HelloLift at {new _root_.java.util.Date}</span>

这里的函数体是一个XML literals(《ProgrammingInScala》Ch26.3 P541)
这个方法的完整定义可以写成

def howdy (content : NodeSeq) : NodeSeq = <span>Welcome to HelloLift at {new _root_.java.util.Date}</span>


在 XML literal中可以混合scala的代码,用{} 区分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值