新建文件

package com.augmentum.oes.taglib;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport; import org.springframework.context.ApplicationContext; import com.augmentum.oes.common.BlockAbstract;
import com.augmentum.oes.util.SpringUtil; public class BlockTaglib extends TagSupport{ private static final long serialVersionUID = -1485358775043610324L;
private String name; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} @Override
public int doStartTag() throws JspException {
return SKIP_BODY;
}
@Override
public int doEndTag() throws JspException {
ApplicationContext ctx = SpringUtil.getApplicationContext();
BlockAbstract block = (BlockAbstract) ctx.getBean(name); String content = block.dispalyBlock(pageContext); JspWriter out = pageContext.getOut(); try {
out.println(content); } catch (Exception e) {
e.printStackTrace();
}
return EVAL_PAGE;
} @Override
public void release() {
super.release();
}
}

  新建tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>oes 1.0 </description>
<display-name>mxz</display-name>
<tlib-version>1.0</tlib-version>
<short-name>block</short-name>
<uri>http://www.oes.com/tag/mxz</uri>
<tag>
<name>display</name>
<tag-class>com.augmentum.oes.taglib.tagl</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag> </taglib>  

在页面中引入

<%@taglib prefix="block" uri="http://www.oes.com/tag/mxz" %>

对于block页面分块

公共类

package com.augmentum.oes.common;

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer; import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext; public abstract class BlockAbstract { public String template; public String getTemplate() {
return template;
} public void setTemplate(String template) {
this.template = template;
} public String dispalyBlock(PageContext pagecontext) {
execute(pagecontext);
HttpServletRequest request = (HttpServletRequest) pagecontext.getRequest();
Writer body = new StringWriter();
try {
if (template != null && !template.trim().equals("")) {
pagecontext.pushBody(body);
pagecontext.include(template);
pagecontext.popBody();
return body.toString();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
body.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
} abstract protected void execute(PageContext pagecontext) ; }

BlockAbstract

要实现的传数据类

package com.augmentum.oes.block;

import javax.servlet.jsp.PageContext;

import com.augmentum.oes.common.BlockAbstract;

public class QuestionInfoBlock extends BlockAbstract{

    @Override
protected void execute(PageContext pagecontext) {
//get data;
} }

QuestionInfoBlock

通过spring获得

    <bean id="questionInfoBlock" class="com.augmentum.oes.block.QuestionInfoBlock">
<property name="template" value="/WEB-INF/jsp/questions/question_list.jsp"></property>
//这里可以注入其他需要的service
</bean>

applicationcontext.xml

页面中调用

taglib block的更多相关文章

  1. echart四川地图

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. jsp中自定义Taglib案例

    一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...

  3. UWP平台Taglib编译(2)

    此文已由作者郑博授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 #endif  // _WIN32 } class FileStream::FileStreamPrivate ...

  4. Objective-C中block的底层原理

    先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...

  5. iOS 键盘添加完成按钮,delegate和block回调

    这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...

  6. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  7. JDBC Tutorials: Commit or Rollback transaction in finally block

    http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...

  8. 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比

    C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...

  9. 嵌入式&iOS:回调函数(C)与block(OC)回调对比

    学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...

随机推荐

  1. vue中.sync修饰符,实现子组件实时更新父组件的值

    vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定. 不过它有一个前身,先来看看.sync出现之前是如何实现的 父组件中(传递给子组件一个值:p ...

  2. ECMAScript 提案阶段

    stage0 strawman任何讨论.想法.改变或者还没加到提案的特性都在这个阶段.只有TC39成员可以提交. stage1 proposal (1)产出一个正式的提案. (2)发现潜在的问题,例如 ...

  3. 用Ajax请求后台数据

    我们先不讲ajax的原理,还是先以实战为主,看一下这个东西到底怎么用的? form表单: <%@ page language="java" contentType=" ...

  4. Linux设备驱动程序 之 延迟执行

    长延迟 有些驱动程序需要延迟比较长的时间,即长于一个时钟滴答: 忙等待 如果想把执行延迟若干个时钟滴答,或者对延迟的精度要求不高,最简单的实现方法就是一个监视jiffies计数器的循环:这种忙等待的实 ...

  5. QThread 线程暂停 停止功能的实现

    为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. //终止原始数据单元进队出队,并清空数据. static bool stopSign; //原始数据单元队列 ...

  6. 【Java】异常的平行处理

    Java对异常的处理,是平行的处理,进行了特定异常的处理后,便不会进入通用异常的处理,出现了未曾显式捕获的异常时,才会进入最宽泛的Excption处理. 具体请看下面代码: package com.h ...

  7. [Java]借助PrintWriter类和StringWriter类,取出异常堆栈信息放入字符串中

    在程序开发中,有时我们不仅需要将异常堆栈信息打印在控制台里或是log里,可能还需要将它存在String中,再送到合适的地方,如错误页面,数据库等. 要取异常堆栈信息,具体的函数就是: /** * Ge ...

  8. C#中正则表达式解析字符串信息

    正则表达式提取0~9数字 private static string RegexPickupNumber(string str) { string pattern = @"[^0-9]+&q ...

  9. 周志华-机器学习西瓜书-第三章习题3.5 LDA

    本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...

  10. features its own

    Gulp.js features its own built-in watch() method - no external plugin required ---- However, the Arn ...