`

bboss标签使用大全-数据展示标签

阅读更多
bboss标签库使用大全

本文介绍bboss中所有数据展示标签使用方法。

1.bbossgroups中的标签
1.1.数据展示标签主要是bboss taglib中的一系列标签,很好地和mvc框架、jquery、jquery easyui结合使用: pager, listdata,notify,list, beaninfo,cell, rowid,rowcount,querystring ,convert,contextmenu,map,mapkey,param,params,index,config,size
树标签:tree,treedata,radio,checkbox
1.2.逻辑标签(可以和页面数据展示标签结合使用,也可以单独使用)equal,notequal,null,notnull, equalandlower, equalandupper,
upper, lower, in, notin,match,contain,notmatch,notcontain,empty,notempty,true,false,startwith,notstartwith,endwith,notendwith
1.3.国际化和主题标签message
theme
1.4.mvc数据绑定错误信息展示标签errors
error
globalerrors
1.5.request/session标签request
session

1.6.数据库操作标签,有效防止sql注入问题
dbutil-执行数据库增、删、改操作(预编译和普通)
sqlparams-用于支持在pager标签,beaninfo标签,list标签上执行预编译操作的绑定变量集合,同时可以指定sql绑定变量的定义语法分界符。

batchutil-执行预编译批处理、普通批处理操作
statement-指定batchutil要执行的批处理语句,可以是预编译sql语句,也可以是普通sql语句
batch-指定statement指定的预编译sql语句的一组绑定变量
sqlparam-用来指定预编译操作的sql绑定变量参数的值、数据类型、数据格式,只能内置在dbutil,sqlparams,statement,batch三个标签中。

数据库标签的介绍,请参考文章:
http://yin-bp.iteye.com/blog/648161

2.下面全面介绍每类标签的简单用法。
2.1.标签定义文件的导入

<%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%>
<%@ taglib uri="/WEB-INF/treetag.tld" prefix="tree" %>
<%@ taglib uri="/WEB-INF/commontag.tld" prefix="common"%>	

2.2.config 标签
config 用来导入标签库用到的js文件,enablecontextmenu用来控制是否输出右键菜单相关的js函数,false不输出,反之输出,使用方法如下:
<pg:config enablecontextmenu="false"/>

2.3.list标签
用来输出list,set,map[],list<map>,list<string,number>等中的数据,使用方法如下,可以和pager标签结合使用,也可以直接从request,session,pagecontext中获取数据,或者直接从数据库获取数据,或者和list嵌套使用,或者通过actual属性结合el表达式获取需要展示的数据。

从request,session,pagecontext中获取数据:
<pg:list requestKey="serverHelloListBean" >			<pg:cell colName="name"/>
       <pg:cell colName="id"/>

</pg:list>


结合el表达式获取数据:
<pg:list actual="${serverHelloListBean}" >			<pg:cell colName="name"/>
       <pg:cell colName="id"/>

</pg:list>


和pager标签结合使用:
<pg:listdata dataInfo="test.pager.TableInfoListData" keyName="TableInfoListData" />
				<!--分页显示开始,分页标签初始化-->
				<pg:pager maxPageItems="15" scope="request" data="TableInfoListData" 
						  isList="false">
					<tr class="cms_report_tr">
						<!--设置分页表头-->
					<pg:header>									
										
						<td width="2%" align=center style="width:5%">
						<input class="checkbox" 
							type="checkBox" hidefocus=true 
							name="checkBoxAll" 
							onClick="checkAll('checkBoxAll','ID')"> 
						</td>
						<pg:title nowrap="true" width="5%" title="TABLE_NAME"
											sort="false" colName="" className="report_header"/>
						<pg:title nowrap="true" width="5%" title="TABLE_ID_NAME"
											sort="true" colName="TABLE_ID_NAME" className="report_header"/>
						
						<td width="28%">
							TABLE_ID_INCREMENT</td>
						
						<td width="6%">
							TABLE_ID_VALUE						</td>
						<td width="9%">
							TABLE_ID_GENERATOR						</td>
						
						<td width="10%" height='30'>TABLE_ID_TYPE</td>
						<td width="10%" height='30'>TABLE_ID_PREFIX</td>
					</pg:header>									
					</tr>
				<pg:notify>
						<tr  class="labeltable_middle_tr_01">
							<td colspan=100 align='center' height="18px">
								没有数据
							</td>
						</tr>
				</pg:notify>

					
				<pg:list  autosort="false">
					<tr class="cms_report_tr">
						

						<td width="2%" align=center style="width:5%">
							<input class="checkbox" hideFocus onClick="checkOne('checkBoxAll','ID')" 
							type="checkbox" name="ID" 
							value="<pg:cell colName="TABLE_NAME" defaultValue=""/>">										
						</td>
						<td width="8%">
							<pg:cell colName="TABLE_NAME" defaultValue=""/>					</td>
						<td width="8%">
							<pg:cell colName="TABLE_ID_NAME" defaultValue=""/>						</td>
						<td width="28%">
							<pg:cell colName="TABLE_ID_INCREMENT" defaultValue=""/></td>
						
						<td width="6%">
							<pg:cell colName="TABLE_ID_VALUE" defaultValue=""/>						</td>
						<td width="9%">
							<pg:cell colName="TABLE_ID_GENERATOR" defaultValue=""/>						</td>
						
						<td width="10%" height='30'><pg:cell colName="TABLE_ID_TYPE" defaultValue=""/></td>
						<td width="10%" height='30'><pg:cell colName="TABLE_ID_PREFIX" defaultValue=""/></td>
					</tr>
					</pg:list>
					<tr class="labeltable_middle_tr_01">
						<td colspan=11 ><div class="Data_List_Table_Bottom"> 
							共
							<pg:rowcount />
							条记录
							每页显示15条
							<pg:index />					</div>  </td>
					</tr>
					<input id="queryString" name="queryString" value="<pg:querystring/>" type="hidden">
					<tr></tr>
				</pg:pager>


直接从数据库获取数据:

<pg:list statement="select * from tableinfo order by table_id_value desc" 
	    		  dbname="bspf">
		
			<tr class="cms_data_tr" id="<pg:cell colName="table_name" defaultValue=""/>">
				<td>
					<pg:cell colName="table_name" defaultValue=""/>
				</td> 
				<td>
					<pg:cell colName="table_id_name" defaultValue="" />
				</td>
				<td class="tablecells" align=center height='30' width="5%">
					<pg:cell colName="table_id_value" defaultValue=""/>
				</td>	
			</tr>
		</pg:list>


和list嵌套使用:

<pg:list requestKey="serverHelloListBean" >			<pg:cell colName="name"/>
       <pg:list colName="innerdatas">
        <pg:cell colName="innername"/>
  <!--获取外围list的属性字段值,index是外层list索引,最外层为0-->
        <pg:cell index="0" colName="name"/>

       </pg:list>

</pg:list>


list标签还可嵌套在beaninfo、map标签中使用。list标签还可以输出数组的元素值:

<pg:list requestKey="serverHelloArray" >
								<pg:rowid increament="1"/> <pg:cell />
							</pg:list>


最后我们看一个在列表中如何嵌套其它列表实现select元素中项默认选中的例子:
<pg:list requestKey="applistData">
<select name="acctasscat">
<option value=""></option>
<pg:list requestKey="acctasscatList" >
<option value="<pg:cell colName='dict_item_code'/>" <pg:equal expression="{0.acctasscat}"  expressionValue="{dict_item_code}">
selected</pg:equal>
>
<pg:cell colName='dict_item_name'/>
</option>
</pg:list>
</select>
</pg:list>

第一个<pg:list requestKey="applistData">是一个对象列表,是需要展示的数据列表,对象中包含属性acctasscat,该属性值对应select下拉选择框的value,如果相应的下拉选择项的值和acctasscat属性的值相等则默认选中。

第二个<pg:list requestKey="acctasscatList" >是一个字典对象列表,我们用它来生成下拉选择框,dict_item_name属性是字典项名称,dict_item_code属性是字典项值,dict_item_code和第一个list中当前记录对象的acctasscat属性对应。
我们用逻辑标签equal来确定select的项是否被选中,equal标签上指定了两个表达式:expression="{0.acctasscat}"  expressionValue="{dict_item_code}"
expression和expressionValue分别代表要比较相等的两个操作数,
expression="{0.acctasscat}" 中的{0.acctasscat}的含义:{}中的名称是一个属性变量,.号前面的0代表最外层list的位置号(在这里表示第一个list,次外层为1,依次类推) ,.号后面的acctasscat表示取第一个list的当前记录的acctasscat属性值最为第一个比较操作数。

expressionValue="{dict_item_code}"中的{dict_item_code}的含义:{}中的名称是一个属性变量,dict_item_code表示取第二个list的当前记录的dict_item_code属性值最为第二个比较操作数。


2.4.cell标签

cell标签典型用法如下:
<pg:cell colName="id" />//默认输出值为""串
<pg:cell colName="id" defaultValue="mm"/>//默认输出值为"mm"串
<pg:cell colName="datea" dateformat="yyyy-MM-dd"/>
<pg:cell colName="money" numerformat="###.##"/>
<pg:cell colName="moudleCNName" htmlEncode="true"/>  //htmlEncode属性控制是否对输出进行html转义编码,true编码,false不编码,默认值为false
<pg:cell colName="id" maxlength="10"/>//超过最大长度10将被截断
<pg:cell colName="id" maxlength="10" replace="..."/>//超过最大长度10将被截断,截断的串将被replace指定的值替换掉
<pg:cell/> //直接输出对象或者当前集合中的记录值(list,数组,map,set中放置的是基本数据类型String,number等)

如果cell标签展示对对象属性时一个对象的话,可以有两种方式来展示colName对应的属性对象中的属性值:
son属性是一个对象类型,结构为:
son{name,class,sex}
第一种 直接用property属性来获取son属性中的name属性:
<pg:cell colName="son" property="name" />

第二种 通过嵌套beaninfo标签来展示son对象中的所有属性:
<pg:beaninfo colName="son">
   <pg:cell colName="name"/>
   <pg:cell colName="class"/>
   <pg:cell colName="sex"/>
</pg:beaninfo>

cell标签可以嵌套在beaninfo、list、map标签中使用也可以单独使用,单独使用的方法如下:

<pg:cell actual="${param.name}" />//直接输出el表达式${param.name}代表的值。

另外cell标签中提供了usecurrentCellValuetoCellName和currentcelltoColName两个属性,具体使用方法可参考文档:
bboss标签实现列表中的动态列数据展示方法

2.5.beaninfo标签
beaninfo标签用来展示po详细信息的标签,具体用法有从request,session,pageContext中获取要展示的对象,或者从db中获取要展示的数据,或者嵌套在list,map,beaninfo标签中展示属性对应的对象。

从request获取要展示的对象:

<pg:beaninfo requestKey="serverHelloMapBean" >
								<pg:cell colName="name"/>
							</pg:beaninfo>


从db中获取要展示的数据:
<pg:beaninfo statement="select * from tableinfo where lower(table_name)='td_sm_user' order by table_id_value desc" 
	    		  dbname="bspf">
		
			<tr class="cms_data_tr" id="<pg:cell colName="table_name" defaultValue=""/>">
				<td>
					<pg:cell colName="table_name" defaultValue=""/>
				</td> 
				<td>
					<pg:cell colName="table_id_name" defaultValue="" />
				</td>
				<td class="tablecells" align=center height='30' width="5%">
					<pg:cell colName="table_id_value" defaultValue=""/>
				</td>	
			</tr>
		</pg:beaninfo>


嵌套在list中使用:
<pg:list requestKey="serverHelloListBean" >			<pg:cell colName="name"/>
       <pg:beaninfo colName="innerdatas">
        <pg:cell colName="innername"/>
  <!--获取外围list的属性字段值,index是外层list索引,最外层为0-->
        <pg:cell index="0" colName="name"/>

       </pg:beaninfo>

</pg:list>




2.6.map、mapkey标签
map标签有两个作用:
1.用来迭代展示map中的所有对象详细信息,map标签展示的数据可以从request,session,pagecontext中获取,也可以嵌套在list,beaninfo,map标签中使用,也可以通过actual属性结合el表达式获取展示数据。
2.用来输出map中的某个值

mapkey标签在map标签中使用,用来输出map中的key值。

map中value可以为各种复杂的对象类型,value可以为普通的bean对象,基础数据类型,list/map/数组等容器对象。

map包括以下主要属性:
requestKey:指定map对象存储在request中的key名称
colName:map对象来源于bean属性名称
keycell:只展示map中的一个数据,指定map所对应的外围容器中当前记录对象作为key值,map标签然后获取key对应的value,map标签中内置的cell标签、逻辑标签、list标签都可以展示value对象中包含的数据
key:只展示map中的一个数据,指定map数据key,从map中获取key对应的value,map标签中内置的cell标签、逻辑标签、list标签都可以展示value对象中包含的数据
keycolName:只展示map中的一个数据,指定map所对应的外围容器中对象中的属性名称,key的由该属性对应的值指定,map标签然后获取key对应的value,map标签中内置的cell标签、逻辑标签、list标签都可以展示value对象中包含的数据

从request获取要展示的对象:

<pg:map requestKey="serverHelloMapBean" >
	
         <pg:mapkey/>
<pg:cell colName="name"/>
							</pg:map>


通过actual属性结合el表达式获取要展示的对象:

<pg:map actual="${serverHelloMapBean}" >
	
         <pg:mapkey/>
<pg:cell colName="name"/>
							</pg:map>


指定key获取map中的一个值:

<pg:map requestKey="serverHelloMapBean" key="testkey">
	
         <pg:cell />
							</pg:map>


如果testkey对应的是一个对象,则可以结合cell标签输出每个属性的值:
<pg:map requestKey="serverHelloMapBean" key="testkey">
	
         <pg:cell colName="pro1"/>
	<pg:cell colName="pro2"/>
</pg:map>



在list或者beaninfo中根据对象属性值获取map中的一个值:

<pg:list requestKey="serverHelloListBean" >	
<pg:cell colName="name"/>

<pg:map requestKey="serverHelloMapBean" keycolName="testkey">
	
         <pg:cell/>
</pg:map>
</pg:list>



嵌套在list中使用:
<pg:list requestKey="serverHelloListBean" >	
		<pg:cell colName="name"/>
       <pg:map colName="innerdatas">
<pg:mapkey/>
        <pg:cell colName="innername"/>
  <!--获取外围list的属性字段值,index是外层list索引,最外层为0-->
        <pg:cell index="0" colName="name"/>

       </pg:map>

</pg:list>


map标签还可以展示Map<Stirng,String>等基础数据类型value的迭代:
<table>
	    <h3>map<String,String>字符串信息迭代功能</h3>
		<pg:map requestKey="mapstrings">
		
			<tr class="cms_data_tr">
				<td>
					mapkey:<pg:mapkey/>
				</td> 
				<td>
					value:<pg:cell/>
				</td> 
				
			</tr>
		</pg:map>
		
		
	</table>


map标签嵌套在beaninfo中使用:
<pg:beaninfo requestKey="portalApplication">
<select id="module_id" name="module_id" class="select1"
style="width: 150px;">
<pg:map requestKey="moduleMap">
<option value="<pg:mapkey/>" <pg:equal expression="{mapkey}" expressionValue="{0.module_id} ">selected</pg:equal>> <pg:cell/> </option> </pg:map>
</select>
</pg:beaninfo>
其中<pg:equal expression="{mapkey}" expressionValue="{0.module_id} ">selected</pg:equal>的含义:
如果map迭代中当前的key和beaninfo标签表示的对象的module_id属性相等则输出selected(0.表示最外层容器的索引编号,次外层为1.,其他依次类推)

map标签展示map中某个key对应值以及更加复杂的案例参考文章:
bboss中的map标签结合list标签/cell标签展示复杂数据结构案例

map中嵌套beaninfo标签:
<pg:map requestKey="moduleMap">
	<pg:mapkey/>	
       <pg:cell colName="name"/>
       <pg:beaninfo colName="classInfo">
           <pg:cell colName="className"/>
       </pg:beaninfo>
         
</pg:map>

2.7.pager、listdata、querystring、rowcount、param、params、index、title、notify标签

pager标签主要用来和index、listdata、list等标签或者mvc框架控制器方法结合实现分页功能,分页数据可以从数据加载器中获取,也可以从db中直接或取,还可以从mvc控制器方法中获取。另外还可以和ajax结合在一个页面中加载多个分页模块。

从数据加载器中获取数据:
<pg:listdata dataInfo="test.pager.TableInfoListData" keyName="TableInfoListData" />
				<!--分页显示开始,分页标签初始化-->
				<pg:pager maxPageItems="15" scope="request" data="TableInfoListData" 
						  isList="false">
<pg:param name="table_name"/> 
<pg:params name="ids"/> 
					<tr >
						<!--设置分页表头-->
					<pg:header>									
										
						<td width="2%" align=center style="width:5%">
						<input class="checkbox" 
							type="checkBox" hidefocus=true 
							name="checkBoxAll" 
							onClick="checkAll('checkBoxAll','ID')"> 
						</td>
						<pg:title nowrap="true" width="5%" title="TABLE_NAME"
											sort="false" colName="" className="report_header"/>
						<pg:title nowrap="true" width="5%" title="TABLE_ID_NAME"
											sort="true" colName="TABLE_ID_NAME" className="report_header"/>
						
											</pg:header>									
					</tr>
				<pg:notify>
						<tr  class="labeltable_middle_tr_01">
							<td colspan=100 align='center' height="18px">
								没有数据
							</td>
						</tr>
				</pg:notify>

					
				<pg:list  autosort="false">
					<tr class="cms_report_tr">
						

						<td width="2%" align=center style="width:5%">
							<input class="checkbox" hideFocus onClick="checkOne('checkBoxAll','ID')" 
							type="checkbox" name="ID" 
							value="<pg:cell colName="TABLE_NAME" defaultValue=""/>">										
						</td>
						<td width="8%">
							<pg:cell colName="TABLE_NAME" defaultValue=""/>					</td>
						<td width="8%">
							<pg:cell colName="TABLE_ID_NAME" defaultValue=""/>						</td>
											</tr>
					</pg:list>
					<tr class="labeltable_middle_tr_01">
						<td colspan=11 ><div class="Data_List_Table_Bottom"> 
							共
							<pg:rowcount />
							条记录
							每页显示15条
							<pg:index />					</div>  </td>
					</tr>
					<input id="queryString" name="queryString" value="<pg:querystring/>" type="hidden">
					<tr></tr>
				</pg:pager>


其中listdata标签指定了分页标签的数据加载器,并将加载器存放在request的attribute属性TableInfoListData中,pager标签通过data属性引用该加载器,并且指定了每页最多显示15条记录;param 标签用来记录页面请求参数以便上下翻页时不丢失请求或者查询参数(单个参数);params 标签用来记录页面请求参数数组以便上下翻页时不丢失请求或者查询参数(参数数组);notify标签用来输出没有数据的提示信息;list标签用来迭代输出当页数据;rowcount标签输出总记录数;index标签输出以下内容:
上下分页导航按钮
共几页,每页多少条记录,调整到第几页,设置每页记录数等等
querystring标签用来输出页面所有参数串,用来方便进行处理和操作后任然跳回到当前页面。

从数据库中直接获取数据,这个和上面的用法的唯一区别就是:

不需要listdata标签,只需要将pager标签如下使用即可:
<pg:pager statement="select * from sqltest where rownum < 10 order by object_name " 
	    		  dbname="portal" isList="false" >


和ajax结合在一个页面中加载多个分页模块的使用方法:
主页面内容:
  <pg:config/>
	<body>
			<div id="pagecontainer">
				<script type="text/javascript">
				$(document).ready(function(){
					  $("#pagecontainer").load("pagerqueryuser.htm #pagecontent");
					});
				</script>
			</div>
			
			<div id="pagecontainer1">
				<script type="text/javascript">
				$(document).ready(function(){
					  $("#pagecontainer1").load("pagerqueryuser1.htm #pagecontent");
					});
				</script>
			</div>
	</body>


两个从页面内容基本上差不多:
<div id="pagecontent">
              
			   	<pg:pager scope="request" data="users" 
						  isList="false" containerid="pagecontainer" selector="pagecontent">
				<pg:param name="userName" encode="true"/>
			<table class="genericTbl">
					<tr >
						<pg:title nowrap="true" width="8%" title="用户ID:"
											sort="true" colName="userId" className="order1 sorted"/>	
						
						<pg:title nowrap="true" width="8%" title="用户NAME:"
											sort="true" colName="userName" className="order1 sorted"/>	
					</tr>
					<pg:notify>
					<tr class="cms_report_tr">
					<td width="10%" align=center colspan="100" style="width:5%">
						没有数据
					</td>
					</tr>				
				</pg:notify>
				<pg:list autosort="false">
					<tr class="even">
						
						 <td ><pg:cell colName="userId" defaultValue=""/>  
                         </td>  
                         <td width="8%" >  
                          <pg:cell colName="userName" defaultValue=""/></td>  
					</tr>
				</pg:list>
			</table>
			<div><pg:index/></div>
			</pg:pager> 
</div>


需要说明的就是pager标签上新加的两个属性
containerid="pagecontainer" //代表main页面的div容器id,这个分页list的内容将在该div中展示
selector="pagecontent" //表示分页页面内容的选择器

data="users"对应的ListInfo对象直接从mvc控制器方法设置到request的attribute属性中。例如:
	public String pagerqueryuser1(@PagerParam(name=PagerParam.SORT ) String sortKey,
			@PagerParam(name=PagerParam.DESC,defaultvalue="true") boolean desc,
			@PagerParam(name=PagerParam.OFFSET) long offset,
			@PagerParam(name=PagerParam.PAGE_SIZE,defaultvalue="2") int pagesize,
			@RequestParam(name = "userName") String username ,
			ModelMap model) throws UserManagerException {
		ListInfo userTemp = userService.getUsersNullRowHandler(username,offset, pagesize);
		model.addAttribute("users", userTemp);
		return "jquerypagine/page1";
	}


特别说明:分页跳转时如何记录页面的查询参数或者其他请求参数
通过param标签和params标签来记录页面的查询参数或者其他参数,放置的位置一般放置在pager标签下面,例如:
<pg:pager maxPageItems="15" scope="request" data="TableInfoListData"
  isList="false">
<pg:param name="table_name"/>
<pg:params name="ids"/>


param标签用于记录单个值的参数,参数名称通过name指定
params标签用于记录多个值的参数,参数名称通过name指定

2.8.index标签
index标签作为导航标签具有以下实用的属性:
export-控制导航键是否出现得属性:000000000(9位) 分别对应于"第几页"、“共几页”、“首页”、“下一页”、“上一页”、“尾页”、“跳转到”,“每页显示几条记录”,"共多少条记录"
对应得位置上的值为0时标示显示该按钮,为1时不显示。

useimage-导航按钮是否使用图片,默认值为false 只有useimage=true时,imagedir和imageextend才起作用
如果useimage=true时,没有指定imagedir和imageextend属性,那么采用默认属性 使用方法 <pg:index
useimage="true" imagedir="/include/images" imageextend=" border=0 "/>

useimage-如果useimage=true时,没有指定imagedir和imageextend属性,那么采用默认属性 使用方法 <pg:index
useimage="true" imagedir="/include/images" imageextend=" border=0 "/>
imagedir-导航按钮图片存放目录,存放的图片名称为: first.gif-首 页 next.gif-下一页 pre.gif-上一页
last.gif-尾 页 默认值为:/include/images

imageextend-导航图片的扩展属性串,默认值为:" border=0 "
classname-中间页面样式名称,类似于google的页码1页,2页的样式

tagnumber-设置展示的中间页面数,默认为-1,即不展示中间页
centerextend-中间页扩展属性,用来设置每个页面元素的额外css属性和其他扩展属性

sizescope-可选择页面显示记录数,默认为
"5","10","20","30","40","50","60","70","80","90","100"
用户可以自定义这个范围,以逗号分隔即可
如果在pager标签和list标签上指定的maxPageItems属性对应的页面记录条数不在sizescope范围中,那么
将把maxPageItems作为第一个选项加入到sizescope中
每页默认显示多少条记录有两个地方可以指定,一个地方是pager标签上指定:
<pg:pager maxPageItems="15" ...

一个地方是bboss mvc控制器分页方法参数pagesize的注解中指定defaultvalue="2":
	public String pagerqueryuser1(......
			@PagerParam(name=PagerParam.PAGE_SIZE,defaultvalue="2") int pagesize,
......
	}

一旦手动切换了每页显示记录条数,则会将这个最新的记录条数存到cookie中,不再使用默认设置的最大记录条数,除非清除cookie。

2.9.rowid、rowcount、pagesize标签
rowid标签用来输出list和map循环中的行号,具体使用方法如下:
<pg:rowid /> //默认从0开始
<pg:rowid increament="1"/>  //从1开始
<pg:rowid  offset="true"/>  offset为用来表示每页是否都从0开始重新计数

rowcount标签用来输出总记录数,用法如下:
<pg:rowcount />

pagesize用来输出当前页面记录,用法如下:
<pg:pagesize />

2.10 convert标签
convert标签主要用来实现属性值的转码,也就是说经属性值和名称的映射关系放到map中,然后通过convert标签结合colName和code属性结合来实现代码转换:

<%
Map aaaaa = new HashMap();
aaaaa.put("1","男");
aaaaa.put("2","女");
request.setAttribute("codes",aaaaa);
%>
<pg:convert convertData="codes" colName="sex"/>
2.11.标签内置变量
list、map、beaninfo标签都有一些内置java变量,可以直接在标签中使用:
list、map标签:dataSet对象,可以使用java代码访问该对象获取数据
beaninfo标签:beanifo对象,可以使用java代码访问该对象获取数据

更多的标签属性可以参考标签定义tld文件:pager-taglib.tld
未完待续。
分享到:
评论
12 楼 yin_bp 2014-12-04  
再不行就用texteara框输出
11 楼 yin_bp 2014-12-04  
huangjia7 写道
huangjia7 写道
将一个字符 放入 ModelMap传到前台显示,该字符中含有换行\n ,前台的<pg:cell 标签解析该字符会显示不全,现有标签有什么解决方法不?


后台代码:model.addAttribute("leaveitems", "租借的物品:电脑 1台\n遗留物品:充电器 1台");

这个字符(leaveitems)在前台显示:因为字符中有 \n ,所以用<pg:cell标签显示会不全。我是问现有的标签有解决办法吗?


cell标签写法发给我看看,试试刚才所说的htmlEncode属性为true,还有就是直接用el表达式输出试试
10 楼 huangjia7 2014-12-04  
huangjia7 写道
将一个字符 放入 ModelMap传到前台显示,该字符中含有换行\n ,前台的<pg:cell 标签解析该字符会显示不全,现有标签有什么解决方法不?


后台代码:model.addAttribute("leaveitems", "租借的物品:电脑 1台\n遗留物品:充电器 1台");

这个字符(leaveitems)在前台显示:因为字符中有 \n ,所以用<pg:cell标签显示会不全。我是问现有的标签有解决办法吗?
9 楼 yin_bp 2014-12-04  
huangjia7 写道
将一个字符 放入 ModelMap传到前台显示,该字符中含有换行\n ,前台的<pg:cell 标签解析该字符会显示不全,现有标签有什么解决方法不?

可以试试cell标签的htmlEncode属性。
8 楼 huangjia7 2014-12-04  
将一个字符 放入 ModelMap传到前台显示,该字符中含有换行\n ,前台的<pg:cell 标签解析该字符会显示不全,现有标签有什么解决方法不?
7 楼 yin_bp 2014-10-14  
huangjia7 写道
问个关于<dict>标签问题,有这样业务:对table动态增加一行:
var roomtr='<tr>'
+'<td><input id="arrivedate" name="arrivedate" type="text" class="w120" onFocus="WdatePicker()" value="<pg:cell actual="${hDate}" dateformat="yyyy-MM-dd"/>" readonly="readonly" style="width: 90px;"/></td>'
+'<td>"<dict:select type="priceCode" name="pricecode" style="width:90px"/>"</td>'
+'<td>3</td>'
+'<td class ="addLine"></td><td></td></tr>';
$(roomtr).appendTo("#roomtable");

但这种<dict>标签 写在字符串的写法会报错:
SyntaxError: missing ; before statement
+'<td>"<select name='pricecode' style='width:90px'><option value='RR'>全价</option

动态生成的下拉框不全,但<pg:cell 标签是没有问题的。有遇到这种情况吗?



原因很简单,因为这段脚本会先在服务端将<dict:select标签解析成实际的脚本替换掉原来的标签,到客户端(浏览器端)后已经变成下面的样子了:
var roomtr='<tr>'
	+'<td><input id="arrivedate" name="arrivedate" type="text" class="w120" onFocus="WdatePicker()" value="<pg:cell actual="${hDate}" dateformat="yyyy-MM-dd"/>" readonly="readonly" style="width: 90px;"/></td>'
	+'<td>"<select name='aaa'>
                   <option>aaadd</option>
                  </select>
"</td>'
	+'<td>3</td>'
	+'<td class ="addLine"></td><td></td></tr>';
 $(roomtr).appendTo("#roomtable");


这个js赋值语句语法已经乱了,在浏览器端执行这个语句时肯定报语法错误,cell标签可以是因为cell输出的值没有换行之类的特殊字符,没有破坏这条js赋值语句的语法,所以没有问题。
这个问题其实是我们在服务拼接javascript代码是必须要注意的问题,后台动态变量的值很容易破坏原来的js语法,在服务端是感觉不到,但是在浏览器端就报错了。

解决的办法就是先将这个select元素在页面中隐藏起来,然后通过js在浏览器端动态将select元素追加到表格的行中。
6 楼 huangjia7 2014-10-14  
问个关于<dict>标签问题,有这样业务:对table动态增加一行:
var roomtr='<tr>'
+'<td><input id="arrivedate" name="arrivedate" type="text" class="w120" onFocus="WdatePicker()" value="<pg:cell actual="${hDate}" dateformat="yyyy-MM-dd"/>" readonly="readonly" style="width: 90px;"/></td>'
+'<td>"<dict:select type="priceCode" name="pricecode" style="width:90px"/>"</td>'
+'<td>3</td>'
+'<td class ="addLine"></td><td></td></tr>';
$(roomtr).appendTo("#roomtable");

但这种<dict>标签 写在字符串的写法会报错:
SyntaxError: missing ; before statement
+'<td>"<select name='pricecode' style='width:90px'><option value='RR'>全价</option

动态生成的下拉框不全,但<pg:cell 标签是没有问题的。有遇到这种情况吗?


5 楼 yin_bp 2014-09-09  
这三个回复中涉及到的功能对list(列表和分页)、map、beaninfo标签都起作用
4 楼 yin_bp 2014-09-09  
根据行号求余所得的值进行比较处理:
<pg:list requestKey="titleList">
							<pg:equal expression="{rowid}%2" value="0">
								<li class="current"><a
									href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:equal>
							<pg:notequal expression="{rowid}%2" value="0">
							<li><a href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:notequal>
						</pg:list>
3 楼 yin_bp 2014-09-09  
rowid和pagesize内置变量结合
简单的根据行号是否是当页最后一行(行号从0开始)来进行相应的处理的实例:

<pg:list requestKey="titleList">
							<pg:equal expression="{rowid}" expressionValue="{pagesize}-1">
								<li class="current"><a
									href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:equal>
							<pg:notequal expression="{rowid}"  expressionValue="{pagesize}-1">
							<li><a href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:notequal>
						</pg:list>



整个标签库为表达式预留了以下变量:
rowid:可以在表达式中获取当前记录集的行号,带页面偏移量,前面可带外面集合的索引号,索引号从最外层集合以0开始,依次加1
offset:在表达式中获取当前页面记录的起始位置,分页时有用
rowcount :保存总记录数
pagesize:保存当页获取到的实际纪录数
mapkey: 保存map迭代当前的key值
currentcell:保存list/array循环中当前的值

另外表达式的使用,可以参考文档:http://yin-bp.iteye.com/blog/2022430
2 楼 yin_bp 2014-09-09  

huangjia7 写道
请问:<pg:list 标签,怎么判断当前是第几列。我现在有个业务:列表的某列,如果是第一行:会怎么怎么处理。其余行:会怎么怎么处理。

简单的根据行号是否是第0行(行号从0开始)来进行相应的处理的实例:
rowid在list中的使用方法
<pg:list requestKey="titleList">
							<pg:equal expression="{rowid}" value="0">
								<li class="current"><a
									href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:equal>
							<pg:notequal expression="{rowid}" value="0">
							<li><a href="javascript:void(0);" id="<pg:cell colName="id"/>"><pg:cell colName="url"/></a></li>
							</pg:notequal>
						</pg:list>


rowid在map中的使用方法
<pg:map requestKey="titleMap">
							<pg:equal expression="{rowid}" value="0">
								<li class="current"><a
									href="javascript:void(0);" id="<pg:mapkey/>"><pg:cell /></a></li>
							</pg:equal>
							<pg:notequal expression="{rowid}" value="0">
							<li><a href="javascript:void(0);" id="<pg:mapkey/>"><pg:cell /></a></li>
							</pg:notequal>
						</pg:map>
1 楼 huangjia7 2014-09-09  
请问:<pg:list 标签,怎么判断当前是第几列。我现在有个业务:列表的某列,如果是第一行:会怎么怎么处理。其余行:会怎么怎么处理。

相关推荐

    bboss ioc配置文件中使用外部属性文件介绍

    除了`&lt;property-placeholder&gt;`标签,BBoss还支持使用`&lt;context:property-placeholder&gt;`标签,它是Spring框架的一部分,也可以与BBoss集成使用。这种方式的配置类似,但提供了更多的选项,如默认值、忽略未定义的属性...

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    4. **源码分析**:标签中提到的“源码”意味着我们可以通过查看BBoss Persistent的源代码来了解其内部处理大字段的具体实现。通过这种方式,开发者可以更好地理解其工作原理,进行定制化开发或优化。 5. **工具支持...

    jsonp异步

    `bboss-tablib`可能包含了表格展示和操作的相关组件,这些组件可能同样支持JSONP,使得跨域数据可以方便地在表格中展现。 `bboss-util`和`bboss-persistent`可能是BBoss框架的工具类库和持久化层组件,它们可能提供...

    基于Java的bboss开源框架设计源码

    bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。

    Bboss国际化实践.ppt

    总之,Bboss的国际化实践涵盖了从用户界面到后台数据的全面支持,通过标准化的配置和组件,确保系统能在全球范围内提供一致且友好的用户体验。这一过程涉及到资源文件的管理、语言识别、菜单配置等多个层面,旨在...

    Bboss和xstream序列化反序列化性能对比1

    在数据结构方面,测试使用了一个名为`Person`的类,该类包含了各种类型的字段,如`PhoneNumber`对象、字符串数组、列表、映射和集合。这有助于模拟真实世界的复杂对象结构,并评估两个库在处理这些结构时的性能。 ...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    标题中的“bboss mvc 通过jsonp实现跨站跨域远程访问”指的是使用bboss MVC框架来处理JSONP(JSON with Padding)请求,以克服浏览器的同源策略限制,实现跨域数据交互。bboss MVC是一个Java Web开发框架,它提供了...

    J2EE企业级开源框架bboss v5.0.8

    3. **JSP自定义标签库**: bboss提供了丰富的JSP自定义标签,简化了页面开发,使得开发者可以专注于页面布局,而无需过多关注底层实现细节。这些标签通常封装了常见的功能,如数据绑定、条件判断等。 4. **持久层...

    J2EE企业级开源框架bboss v5.0.2.9

    bboss提供了丰富的JSP自定义标签库,这些标签简化了JSP页面的编写,使开发者可以通过直观的标签语法实现复杂的页面逻辑。标签库的使用降低了代码冗余,提高了开发效率,并提升了代码的可读性。 ### 4. 持久层支持 ...

    J2EE企业级开源框架bboss v5.0.6.8

    **J2EE企业级开源框架bboss v5.0....总之,bboss v5.0.6.8是一个强大且全面的J2EE开发框架,它的多种特性使其成为企业级应用开发的理想选择,无论是后端逻辑处理、前端展示还是跨服务交互,bboss都能提供有力的支持。

    J2EE开源框架

    - **JSP 标签库**:displaytag 通常与 Struts 结合使用,用于生成列表和表格;Struts-Layout 提供了一系列丰富的 UI 组件,方便开发者构建用户界面。 - **客户端脚本**:AJAXTags、StrutsAjaxTags 和 AjaxAnywhere...

    J2EE企业级开源框架bboss v5.0.3.6

    bboss提供了丰富的JSP自定义标签库,使开发者能够在页面上更方便地操作数据和执行业务逻辑,降低了视图层与模型层的交互复杂性。这些自定义标签使得JSP代码更简洁、可读性更强,同时提高了开发效率。 ### 4. 持久层...

    Bbossgroups体系架构.ppt

    3. **Bboss标签库**:Bboss提供了丰富的标签库,可以方便地在JSP页面中进行数据绑定、表单处理和页面渲染,极大地提高了开发效率。同时,框架还支持自定义标签库的扩展。 4. **国际化与主题管理**:Bbossgroups支持...

    url操作权限

    由于提供的文件名为“bboss会话共享培训文档.pptx”,我们可以推断出这个文档可能与BBoss(一个企业级开源JavaEE开发框架)有关,特别是关于会话共享的议题。会话共享通常在分布式系统中出现,目的是在多个服务器...

Global site tag (gtag.js) - Google Analytics