页面 button标签 但是没有权限控制,我想自定义标签来进行权限控制,没有权限的用户是看不到,才button的,请问给为高手如可处理?

解决方案 »

  1.   

    权限管理你用struts2 自定义标签,你思维很跳跃权限管理一般不是按你的方法来的,权限/角色一般体现在数据库中,页面展示根据角色来判断并给出对应页面。
      

  2.   

    一般不会这么实现权限管理的。
    刚才我看了下struts2 自定义标签,需要在自定义标签时做个判断,感觉不太可行。
      

  3.   

    正如楼上所说 想做给判断但是不知道怎么做 用来隐藏button
      

  4.   

    1.继承TagSupport,重写doStartTag,doAfterBody,doEndTag 2、标签定义文件:*.tld 3、标签引用<%@ taglib uri="" prefix=""%>在doStartTag写你希望达到的hide和show的效果,
      

  5.   

    楼上给出了解决思路了,一般都是控制到页面级别的,要想控制到按钮级别,而且还要灵活控制,那就要自己写标签了,在doStartTag中写,根据当前用户的权限进行判断,是否显示标签内的内容。
      

  6.   

    <s:if> 有权限显示按钮</s:if><s:else>没有权限不显示按钮或者disabled</s:else>
      

  7.   

    <s:if> 有权限显示按钮</s:if><s:else>没有权限不显示按钮或者disabled</s:else>
      

  8.   

    可以判断样式的显示,
    也可以用 <s:if>,<s:else if>和<s:else>来实现页面代码的判断。
      

  9.   

    可以判断样式的显示,
    也可以用 <s:if>,<s:else if>和<s:else>来实现页面代码的判断。
      

  10.   


    /*
     * $Workfile: ImgButtonTag.java $ 
     * Copyright (c) 2011 hxk, International.
     * All rights reserved
     * Last Changed by: $Author: hxk $ 
     * On: $Date: 2011-12-07 $ 
     * $Revision: 0.1 $ 
     */
    public class ImgButtonTag extends TagSupport {
    /**图片按钮名称 [可选]*/
    private String name = "add";
    /**图片路径 [必须]*/
    private String url = null;
    /**按钮权限 [必须]*/
    private String permissions = null;
    /**按钮事件 [可选]*/
    private String onClick = null;
    /**图片宽 [可选]*/
    private int width=0;
    /**图片高 [可选]*/
    private int height=0; /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#doEndTag()
     */
    public int doEndTag() throws JspException
    {
    return (SKIP_BODY);
    } /* (non-Javadoc)
     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
     */
    public int doStartTag() throws JspException
    {
    String imgButton = this.createImgButton();
    TagUtils.getInstance().write(pageContext, imgButton.toString());
    return (SKIP_BODY);
    }
    /**
     * 创建图片按钮
     * @author hxk
     * @date 2011-12-07
     * @version 0.1
     * @return
     */
    public String createImgButton() {
    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/"+request.getContextPath()+"/images/button/";
    StringBuffer imgButton = new StringBuffer();
    //如果权限为true显示图片否则相反
    if(StringUtil.isEquals(permissions, "true")) {
    //构造<img>标签
    imgButton.append("<img ");
    //图片路径
    imgButton.append("src=\""+basePath+url+"\" ");
    //图片名称
    imgButton.append("name=\""+this.name+"\" ");
    //设置图片的border属性
    imgButton.append("border=\"0\" ");
    //设置图片的宽
    imgButton.append((width == 0) ? "" : "width=\""+width+"\" ");
    //设置图片的高
    imgButton.append((height == 0) ? "" : "hetght=\""+height+"\" ");
    //设置图片当鼠标放上去后出现手形状
    imgButton.append("style=\"cursor:pointer;\" ");
    //加图片onClick事件
    imgButton.append((onClick == null) ? "" : "onClick=\""+onClick+"\" ");
    //标签结束
    imgButton.append("/>");
    }else {
    //构造<img>标签
    imgButton.append("<img ");
    //图片路径
    imgButton.append("src=\""+basePath+url+"\" ");
    //图片名称
    imgButton.append("name=\""+this.name+"\" ");
    //设置图片的border属性
    imgButton.append("border=\"0\" ");
    //设置图片的宽
    imgButton.append((width == 0) ? "" : "width=\""+width+"\" ");
    //设置图片的高
    imgButton.append((height == 0) ? "" : "hetght=\""+height+"\" ");
    //设置图片当鼠标放上去后出现手形状、并隐藏按钮
    imgButton.append("style=\"cursor:pointer;display:none;\" ");
    //加图片onClick事件
    imgButton.append((onClick == null) ? "" : "onClick=\""+onClick+"\" ");
    //标签结束
    imgButton.append("/>");
    }
    return imgButton.toString();
    }
    public int getHeight() {
    return height;
    } public void setHeight(int height) {
    this.height = height;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getOnClick() {
    return onClick;
    } public void setOnClick(String onClick) {
    this.onClick = onClick;
    } public String isPermissions() {
    return permissions;
    } public void setPermissions(String permissions) {
    this.permissions = permissions;
    } public String getUrl() {
    return url;
    } public void setUrl(String url) {
    this.url = url;
    } public int getWidth() {
    return width;
    } public void setWidth(int width) {
    this.width = width;
    }}
    String[] permissions = (String[])request.getAttribute("permissions");
    <img:ImgButton name="add" url="add.gif" permissions="<%=permissions[1] %>" onClick="addMenu();"/>&nbsp;&nbsp;<img:ImgButton name="modify" url="modify.gif" permissions="<%=permissions[2]%>" onClick="modifyMenu();"/>&nbsp;&nbsp;<img:ImgButton name="del" url="del.gif" permissions="<%=permissions[3]%>" onClick="removeMenu();"/>至于permissions的由来请查看http://topic.csdn.net/u/20111211/18/9f596370-9e93-42d4-af27-152cccd29e69.html
      

  11.   


    tld配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>
    <tlibversion>1.2</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>wms</shortname>
    <uri>http://struts.apache.org/tags-logic</uri>
    <tag>
    <name>ImgButton</name>
    <tagclass>com.hxk.common.taglib.ImgButtonTag</tagclass>
    <bodycontent>JSP</bodycontent>
    <attribute>
    <name>name</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>url</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>permissions</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>onClick</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>width</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>height</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    </tag>
    </taglib>
      

  12.   


    tld配置
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>
    <tlibversion>1.2</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>wms</shortname>
    <uri>http://struts.apache.org/tags-logic</uri>
    <tag>
    <name>ImgButton</name>
    <tagclass>com.hxk.common.taglib.ImgButtonTag</tagclass>
    <bodycontent>JSP</bodycontent>
    <attribute>
    <name>name</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>url</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>permissions</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>onClick</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>width</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <name>height</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    </tag>
    </taglib>
      

  13.   

    自定义标签是不是struts2的东西。请楼主先搞清楚这一点
      

  14.   


    JSP有自定义标签Struts2也有