jstl自定义标签实现jsp页面元素权限控制

自定义JSTL标签*

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>PMv2</short-name>
    <uri>/PMv2-tags</uri>
    <display-name>自定义标签</display-name>
    <description>自定义标签</description>
    <tag>
        <name>auth</name>
        <tag-class>com.csot.tag.pageAuthTag</tag-class>
        <body-content>jsp</body-content>
        <description>页面元素权限控制</description>
        <attribute>
            <name>flag</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>控制权限过滤的标志</description>
        </attribute>        
    </tag>
</taglib>

获取标签提内容并给元素加上readonly=“true”属性

public class pageAuthTag extends BodyTagSupport {
  Boolean flag;

  public Boolean getFlag() {
    return flag;
  }

  public void setFlag(Boolean flag) {
    this.flag = flag;
  }

  private static final long serialVersionUID = -8478342997102368372L;

  @Override
  public int doEndTag() throws JspException{
    BodyContent bc = this.getBodyContent();//获取标签体内容对象  
    String content = bc.getString();
    String string = "readonly=\"true\"";
    if(flag == false){
      StringBuffer sb =new StringBuffer(content);
      int index = content.indexOf("value")-1;
      content = sb.insert(index, string).toString();
    }
    try {  
      this.pageContext.getOut().write(content);//在将转化之后的内容输出到浏览器中  
    } catch (IOException e) {  
      throw new RuntimeException(e);  
    } 
    return BodyTagSupport.EVAL_BODY_INCLUDE;
 }

  @Override
  public int doStartTag() throws JspException{
   return BodyTagSupport.EVAL_BODY_BUFFERED; 
  }
}


jsp页面,接受后台传来的flag。

<td class="td_left">问题<span
                style="color: red;">*</span></td>
                <PMv2:auth flag="${flag}">
                   <td class="td_right"><input style="width:120px" name="issueName"  value="${issue.issueName}"/></td>
                </PMv2:auth> 

<—完!>

猜你喜欢

转载自blog.csdn.net/rixingbeioul46364/article/details/78731574