【问题标题】:Creating a simple custom tag to show or hide body创建一个简单的自定义标签来显示或隐藏正文
【发布时间】:2011-08-30 14:56:45
【问题描述】:

我正在尝试创建自己的自定义标签,以便我可以根据属性集显示或隐藏标签之间的内容。

<mytag:isUserInRole role="admin">Show admin specific text</mytag:isUserInRole>`

如果登录用户有role==admin,基本上我想在标签之间显示文本。 我以为这很容易,但到目前为止我还没有运气。如果我在我的 tld 文件集 &lt;body-content&gt;empty&lt;/body-content&gt; 我得到这个异常:

“根据 TLD,标签 auth:isUserInRole 必须为空,但不是”

如果我设置&lt;body-content /&gt; 我得到这个:

无法为 JSP 编译类 - 原因:java.lang.NullPointerException 在 org.apache.jasper.compiler.Parser.parseBody(Parser.java:1857)

谁能看到我做错了什么?

她是我的 tld-files 相关标签:

    <tag>
    <name>isUserInRole</name>
    <tag-class>no.mycompany.tag.AuthorizationTag</tag-class>
    <body-content />
    <attribute>
        <name>role</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
</tag>

这是我的 AuthorizationTag doStartTag 方法:

    public int doStartTag() throws JspException{
    System.out.println("Role"+role);

    //Check that role is given and securitycontext is not null
    if(role==null|| SecurityContextHolder.getContext()==null || SecurityContextHolder.getContext().getAuthentication()==null){
        return Tag.SKIP_BODY;
    }
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();

    if(hasPermission(auth)){
        return Tag.EVAL_BODY_INCLUDE;
    } else {
        return Tag.SKIP_BODY;
    }
}

【问题讨论】:

    标签: java jsp jsp-tags


    【解决方案1】:

    试试这个:&lt;bodycontent&gt;jsp&lt;/bodycontent&gt;,还要注意&lt;body-content&gt;&lt;bodycontent&gt;之间的区别

    【讨论】:

    • 谢谢!像魅力一样工作:)
    【解决方案2】:

    据我所知,有一个 taglib uri="http://www.springframework.org/security/tags" 正是您想要实现的 - 它有 &lt;authorize&gt; 标记。如果您不想使用它,您可以调查源代码,例如org.springframework.faces.security.FaceletsAuthorizeTagHandler.

    【讨论】:

    • 请注意,Facelets 与 JSP 不同,因此标签处理程序可能不完全相同。
    • 是的,我正在调查那个,但我找不到任何关于如何使用它来满足我的需求的文档,所以我决定只实施我自己的解决方案......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多