在工程中定义jsp页面可使用的标签
2018-03-22 00:00
519 查看
摘要: workorder项目中limit标签的定义和使用
1.我们先引入java.servlet.jsp包。由于是maven项目,直接引入依赖
2.定义limit-taglib.tld文件,该文件中定义了limit标签和副标签,使用的时候为limit:checker类似
其中的target-class即为对应的操作实体类,attribute为实体类中的属性。
3.定义对应的实体类
加入success对应的实体类,该实体类主要就是对自己的上层标签的值的校验结果进行获取
然后定义fail 对应的实体类
4.在项目的web.xml文件中定义该标签,这样在该项目的jsp页面就可以使用limit标签了
5.使用举例
该案例即为使用的limit:checker标签,属性为standard和standardList,通过check对应实例里的方法进行计算,limit:success对其父层标签,即limit:check标签的结果进行分析,如果为true,则显示该标签,如果为false则隐藏该标签.
这些逻辑都清楚的写在这些标签的实体类中
1.我们先引入java.servlet.jsp包。由于是maven项目,直接引入依赖
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2.1-b03</version> <scope>provided</scope> </dependency>
2.定义limit-taglib.tld文件,该文件中定义了limit标签和副标签,使用的时候为limit:checker类似
其中的target-class即为对应的操作实体类,attribute为实体类中的属性。
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>limit</short-name> <tag> <name>checker</name> <tag-class>com.credithc.workorder.manage.utils.dict.ViewPowerChecker</tag-class> <attribute> <name>standard</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>standardList</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>success</name> <tag-class>com.credithc.workorder.manage.utils.dict.ViewPowerSuccessTag</tag-class> </tag> <tag> <name>fail</name> <tag-class>com.credithc.workorder.manage.utils.dict.ViewPowerFailTag</tag-class> </tag> </taglib>
3.定义对应的实体类
public class ViewPowerChecker extends TagSupport{ //这里必须继承tagSupport类,重写他的doStartTag()方法,标签在校验的时候走的就是这个方法 /** * */ private static final long serialVersionUID = 3362394184109444638L; /** * 标签验证的权限值 */ private String standard; private String standardList; /** * 验证结果的存储key值 */ static final String CHECK_FLAG = "CHECK_FLAG"; @Override public int doStartTag() throws JspException { boolean tag = checked(standard, standardList); this.setValue(CHECK_FLAG, tag); return EVAL_BODY_INCLUDE; } private boolean checked(String standard,String standardList){ String[] ss =standardList.split(","); if(StringUtils.isEmpty(standardList)){ return false; } return Arrays.asList(ss).contains(standard); } public String getStandard() { return standard; } public void setStandard(String standard) { this.standard = standard; } public String getStandardList() { return standardList; } public void setStandardList(String standardList) { this.standardList = standardList; } }
加入success对应的实体类,该实体类主要就是对自己的上层标签的值的校验结果进行获取
public class ViewPowerSuccessTag extends TagSupport{ /** * */ private static final long serialVersionUID = -5674428112555303827L; @Override public int doStartTag() throws JspException { boolean tag = (Boolean)((TagSupport)this.getParent()).getValue(ViewPowerChecker.CHECK_FLAG); if(tag){ return EVAL_BODY_INCLUDE; }else{ return SKIP_BODY; } } }
然后定义fail 对应的实体类
public class ViewPowerFailTag extends TagSupport{ /** * */ private static final long serialVersionUID = -2700800433218941142L; @Override public int doStartTag() throws JspException { boolean tag = (Boolean)((TagSupport)this.getParent()).getValue(ViewPowerChecker.CHECK_FLAG); if(!tag){ return EVAL_BODY_INCLUDE; }else{ return SKIP_BODY; } } }
4.在项目的web.xml文件中定义该标签,这样在该项目的jsp页面就可以使用limit标签了
<jsp-config> <taglib> <taglib-uri>limit</taglib-uri> <taglib-location>/WEB-INF/limit-taglib.tld</taglib-location> </taglib> </jsp-config>
5.使用举例
<limit:checker standard="sendback" standardList="${map.button }"> <limit:success> <button class="inline-block btn2" onclick="backTask()">退回</button> </limit:success> </limit:checker>
该案例即为使用的limit:checker标签,属性为standard和standardList,通过check对应实例里的方法进行计算,limit:success对其父层标签,即limit:check标签的结果进行分析,如果为true,则显示该标签,如果为false则隐藏该标签.
这些逻辑都清楚的写在这些标签的实体类中
相关文章推荐
- JSP页面如何访问标签中定义的变量-使用实现
- 如何在JSP页面中使用JSTL标签实现if和if-else判断
- 正确显示引入和使用Struts标签库的JSP页面
- 使用struts2标签排除JSP页面要显示的集合中重复项
- jsp中使用c:if动态加载一些属性到标签 jsp中添加锚点,页面自动定位
- 如何在JSP页面使用JSTL标签获取List的元素个数
- 在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?(转)
- 在JSP页面中使用标签判断字符串长度的问题
- jsp页面中使用<s:debug></s:debug>标签报错
- JSTL 标签获得jsp页面上定义的变量
- 在jsp页面中使用<c:if标签比较两个值
- jsp页面使用jstl标签格式化String类型日期
- 使用jsp include标签包含静态页面出现的乱码问题
- 使用maven和eclipse自动生成的web工程中jsp页面c:out不生效的解决
- jsp页面使用struts标签报argument type mismatch异常
- 使用JSP自定义标签做页面片段的缓存
- 使用JSP自定义标签做页面片段的缓存
- 直接在jsp页面上使用flex标签
- 使用frameset标签来布局jsp页面