导语:
接上期的博客讲述了jsp的自定义标签,今天我们主要来看以一下foreach和select这个自定义标签。
JSP自定义标签(一看就会)https://blog.csdn.net/weixin_67150631/article/details/125671236?spm=1001.2014.3001.5501本期的文章就是教会大家定义自己的标签去使用,为什么可以让我们自定义标签呢?其目的就是为了封装一些公共功能,比如分页功能的代码、一个复杂样式的按钮,如果这些代码每个人都去编写一遍,显然会增加工作量,所以我们可以把相关代码封装成我们自定义的标签,这样在自己和他人需要使用时,直接使用这个标签就可以获得相关的功能了
foreach标签
1.编写助手类
package com.zking.mvc.tag;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import javax.servlet.jsp.tagext.BodyTagSupport;
/**
*
* @author 86198 foreach助手类
*/
public class ForeachTag extends BodyTagSupport {
private List<?> items;
private String var;
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
public List<?> getItems() {
return items;
}
public void setItems(List<?> items) {
this.items = items;
}
@Override
public int doStartTag() {
if (Objects.isNull(this.items) || this.items.size() <= 0) {
return SKIP_PAGE;
}
Iterator<?> it = this.items.iterator();
Object next = it.next();
this.pageContext.setAttribute(var, next);
this.pageContext.setAttribute("iterator", it);
return EVAL_BODY_INCLUDE;
}
@Override
public int doAfterBody() {
Iterator<?> it = (Iterator<?>) this.pageContext.getAttribute("iterator");
if (it.hasNext()) {
this.page