srczh.jar视图层是框架中输出到展示给客户端的内容、包含srczh.js、srczh.css、这章涵盖了框架在视图中的几大使用要点,从数据输出到标签数据之间的绑定、格式化、模板输出以及加密输出等功能。
src标签是框架中提供的一种全新标签功能,也是视图层中的核心展示类技术,抛弃jsp定义与约束,因为这个特性,开发人员完全可以把前端设计人员的设计的静态页面拿来使用,这将在确认业务需求、原型设计、到前后端开发融合环节及开发中大大提升效率,而且不仅可以适用于各类语言html,还可以是css、js、word、json等任意文字模板,系统也因这个功能可将页面定义任意文件类型。
src_import | <src_import url="..."></src_import> | 页面转向 | “...”页面重定向请求可以是静态和动态地址 |
src_include | <src_include url="..."></src_include> | 页面包含 | “...”包含请求可以是静态和动态地址 |
src_bind | {[...]} | 基本输出 | "..."输出绑定变量,支持众多数据类型 |
src_list | <src_list name="...">***</src_list> | 数据遍历 | "..."为绑定变量名,"***"为迭代html代码,迭代过程中支持条件标签格式化标签和绑定标签 |
src_if | <src_if whe="...">***</src_if> | 条件判断 | "..."为判断条件,条件为真输出"***"部分html代码 |
src_ifelse | <src_ifelse whe="...">***<src_else>***</src_ifelse> | 条件判断 | "..."为判断条件,条件为真输出第一"***"部分html代码, 条件为假输出第二"***"部分 |
src_fmt | <src_fmt name="..." type="***"></src_fmt> | 格式化输出 | "..."为绑定数据,"***"为格式化类型 |
src_when | <src_when name="..." whe="***" ></src_when> | 按字典输出 | "..."为变量名称,"***"为字典 |
src_out | <src_out type="...">***</src_out> | 转义输出 | "..."为转义类型,"***"为输出内容 |
keep | 原样输出 | 增加keep属性使标签不被解析原样输出,这样在做示例的时候非常有用 |
向页面或文件输出控制器传入的变量内容,使用{[]},一对花括号中间中括号包含输出变量。该变量可以是基础数据或bean、map、json、session。
控制器中使用srcBind(数据对象)进行输出绑定或者使用SrcView对象进行数据输出绑定。
数据类型 | 绑定方式 | 说明 |
Map | {[map]} | 输出一个map对象 |
{[map.key]} | 输出map对象中该key的值 | |
{[map(key)]} | 输出一个map对象的所有key | |
{[map(val)]} | 输出一个map对象的所有value | |
{[map(length)]} | 输出一个map对象的元素数量 | |
List | {[list]} | 输出一个list对象,通常在迭代标签中使用List对象 |
{[(string)]} | 迭代中以字符形式输出List中包含对象 | |
{[list.length]} | 输出一个list对象的长度 | |
{[list(数字)]} | 输出一个list中对应数字下标的对象 | |
Array | {[arr]} | 输出一个Array对象 |
{[(string)]} | 迭代中以字符形式输出Array中包含对象 | |
{[arr(length)]} | 输出一个数组对象的长度 | |
{[arr(数字)]} | 输出一个数组中对应数字下标的对象 | |
javaBean | {[bean]} | 输出一个实体对象 |
{[bean.属性]} | 输出一个实体中对应属性的值 | |
{[bean(属性)]} | 优先输出固定属性,实体属性值输出请使用点{[bean.属性]} | |
{![**]} | 绑定标签中加入!使标签不被解析,原样显示输出,这样用于演示示例 |
注意,固定属性在小括号中:{[对象(固定属性)]}
属性名称 | 适用类型 | 说明 |
(index) | List,Array | 数据索引值,通常在迭代中使用 |
(length) | Map,List,Array | 数据长度,适用容器数据 |
(string) | Map,List,Array | 直接将迭代对象以字符输出 |
(数字) | List,Array | 数据下标,通常在迭代中使用 |
(key) | Map | Map中的所有key值 |
(val) | Map | Map中的所有value值 |
使用域 | 示例 | 说明 |
request | {[...]} | 每一次请求中 |
session | {[$...]} | 每一次会话中 |
Appliction | {[@...]} | 全局任何时候 |
页面重定向到地址“/src/index”
1 | < src_import url = "/src/index" ></ src_import > |
页面中包含一个top页面“/src/index/top”,
1 | < src_include url = "/src/index/top" ></ src_include > |
src_list可以将一个列表数据、数组、等数据循环展现到页面,可以在html、word、cvs、js、css等任意页面文件任意位置出现,该标签只有name一个属性,可以包含其它标签。
1 | < src_list name = "ulst" ></ src_list > |
src_if标签为条件表达式标签,属性whe中用来表达其结果是否true或false,为true则输出标签体中间内容,为fasle的时候不显示。 条件表达式 表示session中UINTRO的属性是否==null
1 | < src_if whe = "{[num]}>0" >{[num]} </src_if > |
1 | < src_if whe = "{[$userSession.UINTRO]}==null" >这家伙不懒,但什么也没有留下 </ src_if > |
src_ifelse标签为条件表达式标签,可以表达ture和false两种情况。
1 | < src_ifelse whe = "{[$userSession.UINTRO]}==null" >这家伙不懒,但什么也没有留下< src_else >{[$userSession.UINTRO]}</ |
表达式中第一字符$表示该属性在session对象中
1 | < src_fmt name = "{[$weblogin.CDATE]}" type = "yyyy-MM-dd HH:mm" ></ src_fmt > |
src_fmt格式化标签 type 属性说明
时间类型 | yyyy-MM-dd HH:mm:ss | 支持所有时间类型格式化 |
*** | 时间简化 如下: *分钟前 *小时前 *天前 *月前 *年前 | |
数字类型 | #,###.000 | 金额计数法 |
+++ | 数量简化 如下: *K+ *W+ *KW+ *E+ .E+ |
src_when字典标签使用以及属性whe说明
若name属性中变量a数据是1,则输出“zhou”;若是2输出“zhang”;3则输出“jun”。
1 | < src_when name = "{[a]}" whe = "1:zhou;2:zhang;3:jun" ></ src_when > |
src_out转义输出标签使用
很多时候开发web程序的时候面临一个输出html标签数据影响到页面的显示,这个时候需要对数据进行转义,src_out标签很好的解决了这个问题,还支持转unicode编码,这个标签还有很大的扩展空间,你想到什么功能没有。
1 | < src_out type = "unicode" >{[a]}</ src_out > |
属性type说明
html | 输出数据进行html标签转义 |
unicode | 输出字符转成unicode转码 |
notunicode | 将unicode数据转成字符 |
sensitive | 敏感字符输出 |
operation | 加入运算输出能力,可以是语法运算及数学运算 |
把页面中的参数于控制器中的实体对象或数据类型对象相互绑定,这里在控制器中直接返回数组方式绑定输出User对象。
表单提交的数据绑定,设置一个实体类,当然直接使用参数用map接收也是可以的,下面示例一个简单的绑定介绍。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class User { private String id; private String uname; private String tel; public String getId() { return id; } public void setId(String id) { this .id = id; } public String getUname() { return uname; } public void setUname(String uname) { this .uname = uname; } public String getTel() { return tel; } public void setTel(String tel) { this .tel = tel; } } |
表单中使用用户实体类做绑定实例
1 2 3 4 5 | < form action = "/src/login/regis" method = "post" > < input type = "text" name = "user.uname" > < input type = "text" name = "user.tel" > < input type = "submit" value = "注册" > </ form > |
控制器中定义绑定对象实例user,这里可以不用get、set
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @SuppressWarnings ( "all" ) public class LoginAction extends SrcAction{ //申明业务层注入对象 private LoginDao ldao; //需要绑定的参数对象 private User user; /** * 跳转到注册页面 */ public Object[] regis(){ if (user!= null ) { user=ldao.regis(user); } //返回注册页面以及注册完成的user对象 return new Object[] { "/html/toRegis.html" ,user}; } } |
Dao中查询可以直接传对象实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** 绑定用户注册 */ public User regis(User user) { SrcJdbc jdbc= new SrcJdbc(); jdbc.Object= "src_userinfo" ; //将要访问的表名 jdbc.return= "ID" ; user.setId( "SEQ_USERINFO.NEXTVAL" ); //oracle 数据库中如主键使用序列 try { //新增后直接返回id号 int id= this .srcDao.insert(jdbc, user); user.setId(id+ "" ); //成功后将返回的id写回实体类 } catch (SQLException e) { e.printStackTrace(); Slog.error( "用户实体注册失败:" +e.getMessage()); //记录失败日志 user.setId( "" ); //失败的情况,id为无 } return user; } |
将一个对象和展示页面输出绑定,更多输出绑定请查看[src标签]段落。
1 2 3 4 5 6 | < form action = "/src/login/regis" method = "post" > < input type = "hidden" name = "user.id" value = "{[user.id]}" > < input type = "text" name = "user.uname" value = "{[user.uname]}" > < input type = "text" name = "user.tel" value = "{[user.tel]}" > < input type = "submit" value = "注册" > </ form > |
srczh.jar框架中使用子页面碎片,页面组合展示可以直接使用标签src_includer,包含中的碎片文件支持src标签数据绑定
属性url中可以是静态或动态地址
1 2 3 4 5 6 | <!-- 用法示例 --> < div class = "top" >< src_include url = "/top.html" ></ src_include ></ div > < div class = "cent" >< src_include url = "/cent.html" ></ src_include ></ div > < div class = "foot" >< src_include url = "/foot.html" ></ src_include ></ div > |
word模板使用,是将创建好的word文件另存为doc后,使用ultaEdit或其它字符工具打开,找到你每个需要替换的字符使用标签替代,除了src_import,src_includer其它标签都可以支持使用,导出方法可以查看章节[控制器-响应][导出doc]
1 2 3 4 5 6 | <!-- 用法示例 --> < w:r > < w:rPr >< w:rFonts w:hint = "eastAsia" />< w:sz w:val = "21" />< w:szCs w:val = "21" /> < w:lang w:val = "en-US" w:eastAsia = "zh-CN" /></ w:rPr > < w:t >{[docname]}</ w:t > </ w:r > |
srczh.jar可以给输出到客户端的javaScript代码进行加密,但是文件却不会加密,还可以在配置文件控制加密,或自行加密文件,对于开发调试到生产阶段有非常好的灵活性
配置文件中打开配置
1 2 3 4 | #加密输出javascript 默认false src.encryScript= true #指定文件加密,多文件使用逗号隔开 src.encryScript_file=login.js |
在页面中引入js文件 “/js/login.js”
1 2 3 4 | <script type= "text/javascript" src= "/js/login.js" ></script> <script type= "text/javascript" > hello( "login" ); </script> |
访问页面中查看其输出内容
通过浏览器下载它
查看发布路径中的源文件还是原样子