淘宝有WordPress网站搭建吗,微信服务市场,哪有免费做网站,网站手机端和电脑端目录
一.foreach标签
编写助手类
编写tld
测试数据辅助类 在页面上使用标签
二.select
编写助手类
编写tld 在页面上使用标签 一.foreach标签 编写助手类
public class ForeachTag extends BodyTagSupport {//存放数据源private List? items;//每次循环获取的…目录
一.foreach标签
编写助手类
编写tld
测试数据辅助类 在页面上使用标签
二.select
编写助手类
编写tld 在页面上使用标签 一.foreach标签 编写助手类
public class ForeachTag extends BodyTagSupport {//存放数据源private List? items;//每次循环获取的对象放入pageContext中并以var属性的值为key进行保存//示例 页面上标签var属性指定为item则每次循环取出的对象obj将执行如下//pageContext.setAttribute(item, obj); //页面中可以使用EL表达式取出对象中的属性, 如 ${item.name}private String var;public List? getItems() {return items;}public void setItems(List? items) {this.items items;}public String getVar() {return var;}public void setVar(String var) {this.var var;}Overridepublic int doStartTag() {if(Objects.isNull(this.items) || this.items.size() 0) {return SKIP_BODY;}Iterator? iterator this.items.iterator();Object obj iterator.next();this.pageContext.setAttribute(var, obj);this.pageContext.setAttribute(iterator, iterator);return EVAL_BODY_INCLUDE;}Overridepublic int doAfterBody() {Iterator? it (Iterator?)this.pageContext.getAttribute(iterator);if(it.hasNext()) {this.pageContext.setAttribute(var, it.next());return EVAL_BODY_AGAIN;}return SKIP_BODY;}} 编写tld
!DOCTYPE taglibPUBLIC -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//ENhttp://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
!-- 标签库描述符 --
taglib xmlnshttp://java.sun.com/JSP/TagLibraryDescriptortlib-version1.0/tlib-versionjsp-version1.2/jsp-versionshort-nameSimple Tags/short-nameuri/zking/uri
tag!-- 标签名 --nameforeach/name!-- 标签助手类 --tag-classcom.zking.tagdemo.tag.ForeachTag/tag-class!-- 标签的内容类型empty表示空标签jsp表示可以为任何合法的JSP元素 --body-contentjsp/body-contentattribute!-- 属性名 OutTag类中的val属性相匹配 --nameitems/name!-- 表示该属性为必要的属性 --requiredtrue/required!-- 该属性可以接受EL表示式的值 --rtexprvaluetrue/rtexprvalue!-- 标签描述用于说明标签的作用 --descriptionout标签test属性用于输出test的值/description/attributeattribute!-- 属性名 OutTag类中的val属性相匹配 --namevar/name!-- 表示该属性为必要的属性 --requiredtrue/required!-- 该属性可以接受EL表示式的值 --rtexprvaluetrue/rtexprvalue!-- 标签描述用于说明标签的作用 --descriptionout标签test属性用于输出test的值/description/attribute/tag 测试数据辅助类
public class Book {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}}
public class TestData {public static ListBook getBooks() {ListBook books new ArrayList();Book b1 new Book();b1.setId(1);b1.setName(水浒传);Book b2 new Book();b2.setId(2);b2.setName(红楼梦);Book b3 new Book();b3.setId(3);b3.setName(西游记);books.add(b1);books.add(b2);books.add(b3);return books;}} 在页面上使用标签
%page importcom.zking.mvc.test.*,java.util.List %
% page languagejava contentTypetext/html; charsetutf-8pageEncodingutf-8%
%taglib prefixz uri/zking %
!DOCTYPE html
html
head
meta http-equivContent-Type contenttext/html; charsetISO-8859-1
titleInsert title here/title
/head
bodyh1%System.currentTimeMillis()%/h1z:hello/!-- out --z:out valadb/%request.setAttribute(name, null);%z:out val${name} defaultValtest/p!-- if --z:if test${100 100}测试if(100 100)/z:ifz:if test${100 1}测试if(100 1)/z:ifp!-- foreach --%//获取测试数据ListBook books TestData.getBooks();//放入request对象中request.setAttribute(books, books);%z:foreach items${books} varbookp${book.id } - ${book.name }/p/z:foreach/body
/html
二.select
编写助手类
package com.zking.tagdemo.tag;import java.util.Map;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;public class SelectTag extends BodyTagSupport{private String name;private MapString, String options;private String selectedValue;public String getName() {return name;}public void setName(String name) {this.name name;}public MapString, String getOptions() {return options;}public void setOptions(MapString, String options) {this.options options;}public String getSelectedValue() {return selectedValue;}public void setSelectedValue(String selectedValue) {this.selectedValue selectedValue;}Overridepublic int doStartTag() throws JspException {JspWriter out this.pageContext.getOut();try {out.print(select name\name\);for (String key : options.keySet()) {if(key.equals(selectedValue)) {out.print( option value\key\ selectedoptions.get(key)/option);}else {out.print( option value\key\ options.get(key)/option);}}out.print(/select);} catch (Exception e) {e.printStackTrace();}return SKIP_BODY;}}编写tld
!DOCTYPE taglibPUBLIC -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//ENhttp://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
!-- 标签库描述符 --
taglib xmlnshttp://java.sun.com/JSP/TagLibraryDescriptortlib-version1.0/tlib-versionjsp-version1.2/jsp-versionshort-nameSimple Tags/short-nameuri/zking/uri
tag!-- 标签名 --nameselectTag/name!-- 标签助手类 --tag-classcom.zking.tagdemo.tag.SelectTag/tag-class!-- 标签的内容类型empty表示空标签jsp表示可以为任何合法的JSP元素 --body-contentempty/body-contentattribute!-- 属性名 OutTag类中的val属性相匹配 --namename/name!-- 表示该属性为必要的属性 --requiredtrue/required!-- 该属性可以接受EL表示式的值 --rtexprvaluetrue/rtexprvalue!-- 标签描述用于说明标签的作用 --descriptionout标签test属性用于输出test的值/description/attributeattribute!-- 属性名 OutTag类中的val属性相匹配 --nameoptions/name!-- 表示该属性为必要的属性 --requiredtrue/required!-- 该属性可以接受EL表示式的值 --rtexprvaluetrue/rtexprvalue!-- 标签描述用于说明标签的作用 --descriptionout标签test属性用于输出test的值/description/attributeattribute!-- 属性名 OutTag类中的val属性相匹配 --nameselectedValue/name!-- 表示该属性为必要的属性 --requiredfalse/required!-- 该属性可以接受EL表示式的值 --rtexprvaluetrue/rtexprvalue!-- 标签描述用于说明标签的作用 --descriptionout标签test属性用于输出test的值/description/attribute/tag 在页面上使用标签
%page importjava.util.HashMap%
%page importjava.util.Map%
%page importjava.util.List%
%page importcom.zking.tagdemo.tag.Book%
%page importcom.zking.tagdemo.tag.BookTest%
% page languagejava contentTypetext/html; charsetUTF-8pageEncodingUTF-8%
%taglib prefixz uri/zking %
!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd
html
head
meta http-equivContent-Type contenttext/html; charsetUTF-8
titleInsert title here/title
/head
bodysname}-${book.tid}/p/z:foreach!-- 模拟数据 --%request.setAttribute(name, 瑶姐);MapString,String map new HashMap();map.put(1, 宝宝);map.put(2, 辉辉);map.put(3, 杰少);request.setAttribute(options, map);%select nametypeoption value1药药/option option value2理论/option option value3 selectedselected付费/option /selectz:selectTag nameselectName options${options} selectedValue3//body
/html