新建文件

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. pause函数

    pause函数 调用该函数可以造成进程主动挂起,等待信号唤醒.调用该系统调用的进程将处于阻塞状态(主动放弃cpu) 直到有信号递达将其唤醒. int pause(void);     返回值:-1 并 ...

  2. 【做题记录】Codeforces做题记录

    最近决定写一些CF Div.1的题,练习一下速度和代码能力. 暂定从中考后的Codeforces Round #572开始. 大部分比较简单的题直接把题解写在这里,不单独开文章了. Codeforce ...

  3. 页面ajax请求传参及java后端数据接收

    js ajax请求传参及java后端数据接收 Controller: package com.ysl.PassingParameters.controller; import java.util.Li ...

  4. POJ2689

    题目 POJ2689 Prime Distance 原题传送门 主要思路 刚看到这题,心想:不就筛个 \(\left[2,U\right]\) 的质数表出来就可以了吗?一看数据范围: \(1<= ...

  5. 6.3 MRUnit写Mapper和Reduce的单元测试

    1.1  MRUnit写单元测试 作用:一旦MapReduce项目提交到集群之后,若是出现问题是很难定位和修改的,只能通过打印日志的方式进行筛选.又如果数据和项目较大时,修改起来则更加麻烦.所以,在将 ...

  6. ubuntu 安装go

    sudo apt install golang-go

  7. SpringMVC返回Map类型转换成JSON失败

    错误信息:WARN DefaultHandlerExceptionResolver:380 - Failed to write HTTP message: org.springframework.ht ...

  8. Hadoop常用操作汇总

    Hadoop Streaming示例程序(wordcount) run_hadoop_word_counter.sh $HADOOP_BIN streaming \ -input "${IN ...

  9. pip 安装的问题

    安装 pip install   mysql-python 报错: mysql_config: command not found 解决办法: yum install mysql-devel yum ...

  10. ELK的安全解决方案 X-Pack(1)

    安装 X-Pack 前必须安装 elasticsearch. Kibana.logstash,因为之前安装ELK选择的版本都是5.4.1,所以这次选择X-Pack的版本也要是5.4.1的 第一步:下载 ...