代码之家  ›  专栏  ›  技术社区  ›  Rakesh Juyal

根据另一个属性,jstl标记中可以有一个可选的属性吗?

  •  1
  • Rakesh Juyal  · 技术社区  · 15 年前

    之前我们有个标签 ifRole 如此

    <op:ifRole role="role1">
       <li id="menu3SubMenu4">This will be shown only to the user with role1</li>
    </op:ifRole>
    

    在这个标签中我们有一个必需的字段 role 和另一个可选字段 secondaryRole . 现在我添加了另一个可选属性 excluding 如此

    <op:ifRole excluding="role2">
       <li id="menu3SubMenu4">This will be shown to all users except the one with role=role2</li>
    </op:ifRole>
    

    另外,我更改了属性 角色 从必需到可选。现在,我不想让任何人用这个标签:

    <op:ifRole excluding="role2" role="role1">
    

    这件事不应该被允许。一种方法是抛出异常 doStartTag 当提供这两个参数时。但我想换个方式。

    1 回复  |  直到 15 年前
        1
  •  3
  •   skaffman    15 年前

    您可以将标记与 javax.servlet.jsp.tagext.TagExtraInfo 类,它可以执行属性的运行时验证。与在标记类中进行验证相比,这可能是一种更干净的方法。

    JavaEE教程涵盖了它 here