【问题标题】:Jsp custom tag with value of an attribute as another custom tag具有属性值的 Jsp 自定义标记作为另一个自定义标记
【发布时间】:2012-05-22 14:47:06
【问题描述】:

我正在创建一些 jsp 自定义标签。现在我有如下要求:

<bb:custom1 id="id1" attr1="<bb:custom2 attr2='attr2val'></bb:custom2>"></bb:custom1>

即属性的值应该是另一个自定义标签,该标签将由相应的标签处理程序解析。我可以看到这适用于所有 html 标签。但是当我尝试使用我的自定义标签时它不起作用。有人可以告诉我这是如何实现的。

我正在使用标签处理程序创建自定义标签。

【问题讨论】:

    标签: jsp jsp-tags custom-tags


    【解决方案1】:

    我通过使用临时变量解决了这个问题:

    <c:set name="val_attr">
        <bb:custom2 attr2='attr2val' />
    </c:set>
    
    <bb:custom1 id="id1" attr1="${val_attr}"></bb:custom1>
    

    它适用于任何标签库(例如 custom2 可以来自 cc:custom2)。

    另一个好处是你不需要知道函数的语法(例如,如果需要很多参数,放哪个顺序):

    <c:set name="val_attr">
        <cc:custom2 param2='myparam2' param1='myparam1' />
    </c:set>
    
    <bb:custom1 id="id1" attr1="${val_attr}"></bb:custom1>
    

    【讨论】:

      【解决方案2】:

      您需要定义自定义 EL 函数,而不是自定义标记 bb:custom2。你可以这么称呼它:

      <bb:custom1 id="id1" attr1="${bb:custom2(attr2val)}"></bb:custom1>
      

      您可以阅读 EL 函数 here

      【讨论】:

      • 但是我认为这对于自定义 tgas 也是可能的。因为如果我对任何基本的 html 标签做同样的事情,即如果我做类似的事情: 它可以工作。但是当我对自定义标签执行相同操作时,它不会。我认为这是因为我在创建标签时遗漏了一些东西。
      • 好的..我认为它仅适用于基本 html 标签的情况。我认为在任何自定义标签中它都不起作用。所以我认为更好的选择是 EL 本身。谢谢建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      相关资源
      最近更新 更多