jsp 自定义标签的使用


jsp中的引用

<%@taglib prefix="f" uri="http://www.jee-soft.cn/functions" %>
web.xml中的配置
<taglib>
<taglib-uri>http://www.jee-soft.cn/functions</taglib-uri>
<taglib-location>/WEB-INF/tld/HtTag.tld</taglib-location>
</taglib> 

 


xxx.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>f</short-name>
<uri>http://www.jee-soft.cn/functions</uri>

<function>
<description>取得当前日期</description> 
<name>currentDate</name> 
<function-class>com.hotent.core.util.TimeUtil</function-class> 
<function-signature>java.lang.String getCurrentDate()</function-signature>
<example>${f:currentDate()}</example> 
</function>

<tag>
<name>validjs</name>
<description>JS验证标签</description> 
<tag-class>com.hotent.core.web.tag.ValidJsTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>formName</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>

</taglib>

 

 

 

java类

一般实现的类,要继承BodyTagSupport 类

package com.hotent.core.web.tag;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.hotent.core.util.ContextUtil;

/**
* 用于实现个性化皮肤。<br/>
* <pre>
* 使用方法如下:
* 
* &lt;f:link href="web.css" >&lt;/f:link>
* </pre>
*
*/
@SuppressWarnings("serial")
public class StyleTag extends BodyTagSupport {
protected Logger logger = LoggerFactory.getLogger(StyleTag.class);
private String href;

public String getHref() {
return href;
}

public void setHref(String href) {
this.href = href;
}

public int doStartTag() throws JspTagException {
return EVAL_BODY_BUFFERED;
}

private String getOutput() throws Exception
{

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
logger.info(request.getRequestURI());
StringBuffer content = new StringBuffer("<link title=\"index\" name=\"styleTag\" rel=\"stylesheet\" type=\"text/css\" href=\"");
content.append(request.getContextPath());
content.append("/styles/");
String styleName=ContextUtil.getCurrentUserSkin(request);
//MyProfile myProfile = UserHelper.getProfile(request);
//    if(myProfile != null && myProfile.getSkin() != null) {
//    content.append(myProfile.getSkin());
//    } else {
content.append(styleName+"/css");
//    }
content.append("/");
content.append(href);
content.append("\"></link>");

return content.toString();
}
public int doEndTag() throws JspTagException {

try {
String str = getOutput();
pageContext.getOut().print(str);
} catch (Exception e) {
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}

}

 

posted @ 2019-04-11 10:32  爱跳舞的程序员  阅读(365)  评论(0编辑  收藏  举报