bboss逻辑标签判断对象类型是否为给定的Class类型方法

在java代码中可以非常方便地判断对象类型是否是给定的类型,例如:
if(object instanceof java.util.Map)
do something.
那么在jsp中也可能需要识别对象的class类型并做出相应的处理,本文介绍采用bboss逻辑标签来判断对象类型是否为特定的Class类型方法。

bboss逻辑标签来判断对象类型是否为给定的Class类型通过true和false两个逻辑标签来实现,通过两个标签的typeof属性来指定需要匹配的Class类型,用来检测相应数据类型是否是typeof给定的类型,typeof可以字符串类型的类路径,也可以直接是Class对象。

bboss逻辑标签的使用文档可以参考:
[url]http://yin-bp.iteye.com/blog/1137674[/url]

具体使用方法如下:
typeof值为字符串类型的类路径
<%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%>
<pg:true typeof="java.util.Map">
do something here.
</pg:true>

<pg:false typeof="java.util.Map">
do something here.
</pg:false>


typeof值直接是Class对象
<%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%>
<pg:true typeof="<%=java.util.Map.class%>">
do something here.
</pg:true>

<pg:false typeof="<%=java.util.Map.class%>">
do something here.
</pg:false>

true标签只有在对应的数据类型匹配上typeof给定的类型才成立
false标签只有在对应的数据类型没有匹配上typeof给定的类型才成立

我们来看一个具体的实例:
这个列子中我们构建一个map容器,容器中放置两种类型的数据,一种数据的类型为test.TestBean,另一种数据的类型为java.util.Map,然后在jsp页面中用map标签输出这些数据,输出数据时需要用到true逻辑标签来识别相应的数据类型,然后来做出相应的输出操作。
<%@ page contentType="text/html; charset=UTF-8" language="java" import="test.*,java.util.*"%>
<%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%>
<%
TestBean bean = null;
Map mapbeans = new HashMap();//定义一个map,值可能是TestBean类型也可能是另外一个map
bean = new TestBean();
bean.setId("uuid");
bean.setName("多多");
mapbeans.put(bean.getId(),bean);//添加一个类型为TestBean的元素

bean = new TestBean();
bean.setId("uuid1");
bean.setName("多多1");
mapbeans.put(bean.getId(),bean);//添加一个类型为TestBean的元素
bean = new TestBean();
bean.setId("uuid2");
bean.setName("多多2");
mapbeans.put(bean.getId(),bean);//添加一个类型为TestBean的元素

Map<String,String> mapstrings = new HashMap<String,String>();
mapstrings.put("id1","多多1");
mapstrings.put("id2","多多2");
mapstrings.put("id3","多多3");
mapstrings.put("id4","多多4");
mapbeans.put("inner", mapstrings);//添加一个类型为Map的元素

request.setAttribute("mapbeans",mapbeans);
%>

<html>
<head>
<title>测试获取map信息实例</title>
</head>
<body>
<table>
<h3>map<String,po>对象信息迭代功能,采用map标签输出map中的元素信息</h3>
<pg:map requestKey="mapbeans">
<pg:true typeof="<%=test.TestBean.class %>">
<tr >
<td>
mapkey:<pg:mapkey/>
</td>
<td>
id:<pg:cell colName="id" />
</td>
<td>
name:<pg:cell colName="name" />
</td>
</tr>
</pg:true>
<pg:true typeof="java.util.Map">
<tr >
<td><table>
<pg:map>
<tr>
<td>outer mapkey use expression:<pg:cell expression="{0.mapkey}" /></td>
<td>outer mapkey :<pg:mapkey index="0"/> , inner mapkey:<pg:mapkey/></td>
<td>
inner value:<pg:cell/>
</td>
</tr>

</pg:map>
</table></td>
</tr>
</pg:true>
</pg:map>
</table>
</body>
</html>

这个例子中我们处理演示类型匹配操作功能外,还演示了嵌套的map标签中通过带索引号内置变量{0.mapkey}获取外围map标签中的mapkey的两种等价方法:
通过内置变量表达式:
<pg:cell expression="{0.mapkey}" />

通过mapkey标签带嵌套索引号index属性的方法:
<pg:mapkey index="0"/>

索引号的规则:最外层嵌套为0,次外层为1,依次类推,list,map,beaninfo可以混合使用,索引号规则可以同时对这些混合嵌套使用的标签起作用。

bboss标签库表达式及标签内置变量的使用文档请参考:
[url]http://yin-bp.iteye.com/blog/2022430[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值