第五篇,jroo自定义标签篇
1、jroo中有不少自定义标签,如数据字典标签(select、checkbox、radio、view),权限标签,分页/排序/序号标签,国际化标签,位置标签等。
2、自定义标签篇
2.1、数据字典自定义标签
数据字典中设置的是系统的常量数据,如性别(男:M,女:F)、审核状态(同意:Y,不同意:N)等;
这些数据在启动服务时就加载到缓存中,在系统上线后,这些常量值一般情况不能轻易改变,不开放给客户;
这些数据在页面中通常都表现为:下拉框、复选框、单选框或仅显示名称。
数据字典中设置的是系统的常量数据,如性别(男:M,女:F)、审核状态(同意:Y,不同意:N)等;
这些数据在启动服务时就加载到缓存中,在系统上线后,这些常量值一般情况不能轻易改变,不开放给客户;
这些数据在页面中通常都表现为:下拉框、复选框、单选框或仅显示名称。
使用:
<my:select pvalue="sex" name="user.sex" value="${user.sex}"/>
<my:checkbox pvalue="sex" name="user.sex" value="${user.sex}"/>
<my:radio pvalue="sex" name="user.sex" value="${user.sex}"/>
<my:view value="${user.sex}" pvalue="sex"/>
2.1.1、下拉框
<my:select
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F,如果有值,渲染后的select在页面上将选中该项
name="" //提交到action的属性名,通标准html select 的name
rules="" //验证规则,如当提交form时,验证是否选择了select : rules="[{notNull:true, message:'请选择请假类型'}]"
firstoption="---" //渲染后的select,第一个option属性的text,默认是‘请选择’
nullValue="true/false" //渲染后的select,第一个option的value是否 '';
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准select的js事件
/>
2.1.2、复选框
<my:checkbox
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F或M,F,当M,F时,渲染后的checkbox在页面上,男和女这两项都是选中的
name="" //提交到action的属性名,通标准html checkbox 的name
scope ="" //数据字典项的子集,每个子集见以英文状态的逗号隔开
nbspnum="3" //渲染后的多个checkbox间的空格,默认是3个空格
splitregex="" //多个选中的值时的分隔符,默认是英文状态的逗号,如M,F。
checked="true/false" //当vale=""时,checked为true时默认全选,为false时默认全不选。
br="true/false" //显示checkbox是否分行,true时一行显示一个checkbox,false时在一行显示,默认false
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准checkbox的js事件
/>
2.1.3、单选框
<my:radio
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F或M,为M时选中男,为F时选中女
name="" //提交到action的属性名,通标准html radio 的name
nbspnum="3" //渲染后的多个radio间的空格,默认是3个空格
br="true/false" //显示checkbox是否分行,true时一行显示一个checkbox,false时在一行显示,默认false
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准radio的js事件
/>
2.1.4、显示名称
<my:view
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码 ,如M是时在页面显示‘男’,为F时在页面显示‘女’
nbspnum="" //checkbox有多个值时,每个checkbox间的空格格式,默认是3个
splitregex="" //checkbox有多个值时,每个值的分隔符,默认是中文状态的逗号
/>
2.1.5、数据字典截图:
2.2、权限标签:在需要权限控制的地方,放在<my:auth/>标签中间;一般是按钮、链接或其他特殊权限数据。
<my:auth value="{auth}">html代码</my:auth>
value:权限级别,它的值是el表达式{auth},auth的值在struts2的自定义权限拦截器中设置的。
auth的值为:W、R、N;
目前是有3中权限级别:
管理权限:权限代码为W,管理权限是最大权限,可进行任何操作;
无访问限制;权限代码为N,该级别权限表示不能进入当前功能,直接返回到一个‘无访问权限’的页面;
查看权限:权限代码为R,拥有查看权限时,仅能查看。
例子,在jsp中:
<my:auth value="{auth}">
<a href="${ctx }/system/user_input.do?id=${user.id}">编辑</a>
<a href="javascript:" title="deletesigle" class="deleteOne" param="ids=${user.id}">删除</a>
</my:auth>
当auth为R时,编辑、删除链接将不可见。
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F,如果有值,渲染后的select在页面上将选中该项
name="" //提交到action的属性名,通标准html select 的name
rules="" //验证规则,如当提交form时,验证是否选择了select : rules="[{notNull:true, message:'请选择请假类型'}]"
firstoption="---" //渲染后的select,第一个option属性的text,默认是‘请选择’
nullValue="true/false" //渲染后的select,第一个option的value是否 '';
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准select的js事件
/>
2.1.2、复选框
<my:checkbox
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F或M,F,当M,F时,渲染后的checkbox在页面上,男和女这两项都是选中的
name="" //提交到action的属性名,通标准html checkbox 的name
scope ="" //数据字典项的子集,每个子集见以英文状态的逗号隔开
nbspnum="3" //渲染后的多个checkbox间的空格,默认是3个空格
splitregex="" //多个选中的值时的分隔符,默认是英文状态的逗号,如M,F。
checked="true/false" //当vale=""时,checked为true时默认全选,为false时默认全不选。
br="true/false" //显示checkbox是否分行,true时一行显示一个checkbox,false时在一行显示,默认false
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准checkbox的js事件
/>
2.1.3、单选框
<my:radio
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码,如M或F或M,为M时选中男,为F时选中女
name="" //提交到action的属性名,通标准html radio 的name
nbspnum="3" //渲染后的多个radio间的空格,默认是3个空格
br="true/false" //显示checkbox是否分行,true时一行显示一个checkbox,false时在一行显示,默认false
styleClass="" //同标准select的class
id=""
disabled=""
multiple=""
size=""
style=""
title=""
...各种js事件,同标准radio的js事件
/>
2.1.4、显示名称
<my:view
pvalue="" //上级代码,如性别的代码SEX
value="" //当前这一级的代码 ,如M是时在页面显示‘男’,为F时在页面显示‘女’
nbspnum="" //checkbox有多个值时,每个checkbox间的空格格式,默认是3个
splitregex="" //checkbox有多个值时,每个值的分隔符,默认是中文状态的逗号
/>
2.1.5、数据字典截图:
2.2、权限标签:在需要权限控制的地方,放在<my:auth/>标签中间;一般是按钮、链接或其他特殊权限数据。
<my:auth value="{auth}">html代码</my:auth>
value:权限级别,它的值是el表达式{auth},auth的值在struts2的自定义权限拦截器中设置的。
auth的值为:W、R、N;
目前是有3中权限级别:
管理权限:权限代码为W,管理权限是最大权限,可进行任何操作;
无访问限制;权限代码为N,该级别权限表示不能进入当前功能,直接返回到一个‘无访问权限’的页面;
查看权限:权限代码为R,拥有查看权限时,仅能查看。
例子,在jsp中:
<my:auth value="{auth}">
<a href="${ctx }/system/user_input.do?id=${user.id}">编辑</a>
<a href="javascript:" title="deletesigle" class="deleteOne" param="ids=${user.id}">删除</a>
</my:auth>
当auth为R时,编辑、删除链接将不可见。
2.3、head标签:<my:head></my:head>
该标签封装了系统常用的js和css,渲染后的html页面中将自动导入这些js和对应的css
<my:head
datePicker="true/false" //是否导入日期js和css,默认为false
lhgdialog="true/false" //是否导入弹出框js和css,默认为false
tree3="true/false" //是否导入ztree v3的js和css,默认为false
easyui="true/false" //是否导入easyui的js和css,默认为false
fck="true/false" //是否导入fck编辑器的的js和css,默认为false
multiFile="true/false" //是否导入附件上传的的js和css,默认为false
tree2=""> //是否导入ztree v2的的js和css,默认为false
例子:
<!doctype html>
<html>
<my:head>
//其他css
//其他js
该标签封装了系统常用的js和css,渲染后的html页面中将自动导入这些js和对应的css
<my:head
datePicker="true/false" //是否导入日期js和css,默认为false
lhgdialog="true/false" //是否导入弹出框js和css,默认为false
tree3="true/false" //是否导入ztree v3的js和css,默认为false
easyui="true/false" //是否导入easyui的js和css,默认为false
fck="true/false" //是否导入fck编辑器的的js和css,默认为false
multiFile="true/false" //是否导入附件上传的的js和css,默认为false
tree2=""> //是否导入ztree v2的的js和css,默认为false
例子:
<!doctype html>
<html>
<my:head>
//其他css
//其他js
</my:head>
<body>
</body>
</html>
2.4、国际化标签:
<my:i18n zhText="" enText=""/>
jsp中,中文环境时显示zhText中的数据,英文环境时显示enText中的数据。
<body>
</body>
</html>
2.4、国际化标签:
<my:i18n zhText="" enText=""/>
jsp中,中文环境时显示zhText中的数据,英文环境时显示enText中的数据。
2.5、排序、分页、序号标签
系统采用form的方式排序和分页,即排序代码和分页代码,都要用form包起来,然后post方法提交。
先看一个例子吧:
<form action="${ctx }/system/user_list.do" method="post" id="userForm">
系统采用form的方式排序和分页,即排序代码和分页代码,都要用form包起来,然后post方法提交。
先看一个例子吧:
<form action="${ctx }/system/user_list.do" method="post" id="userForm">
<div>查询条件.......</div>
<table id="sorttable">
<thead class="ltablehead">
<tr>
<th width="5%">序号</th>
<th width="10%">用户姓名 <my:order orderattr="user.userName"/></th>
<th width="10%">性别 <my:order orderattr="user.sex"/></th>
<th width="15%">部门 <my:order orderattr="user.sysDept.deptName"/></th>
<th width="15%">角色</th>
<th style="width: 15%">操作</th>
</tr>
</thead>
<tbody class="ltablebody"><tr>数据列表......</tr></tbody>
</table>
<div class="ltablebottom">
<div style="float: right;"> <my:page page="${page}"/></div>
</div>
</form>
<table id="sorttable">
<thead class="ltablehead">
<tr>
<th width="5%">序号</th>
<th width="10%">用户姓名 <my:order orderattr="user.userName"/></th>
<th width="10%">性别 <my:order orderattr="user.sex"/></th>
<th width="15%">部门 <my:order orderattr="user.sysDept.deptName"/></th>
<th width="15%">角色</th>
<th style="width: 15%">操作</th>
</tr>
</thead>
<tbody class="ltablebody"><tr>数据列表......</tr></tbody>
</table>
<div class="ltablebottom">
<div style="float: right;"> <my:page page="${page}"/></div>
</div>
</form>
2.5.1、排序标签:<my:order orderattr=""/>
在需要排序的列头加上该标签,属性orderattr与hibernate的hql对应,或sql的表别名.字段名对应,
如:在用户姓名的列头上加:<my:order orderattr="user.userName"/>,
渲染后的页面上将出现一个排序的箭头,点击这个箭头,用户姓名就循环升序和降序;
hql为:...order by user.userName desc。
2.5.2、分页标签:<my:page page="${page}" varName="page"/>
在列表的底部加上分页标签,属性page的值对应action中的分页数据,
2.5.3、分页页面的序号标签:
<my:rowNum page="${page}" rowIndex="${status.index}"/>
将显示每一行的序号。
组合效果,渲染后的页面效果如下:
转载于:https://my.oschina.net/yeshujun/blog/99413