【问题标题】:JSTL custom tagJSTL 自定义标签
【发布时间】:2011-10-15 18:37:15
【问题描述】:

我将如何为具有 2 个属性的自定义标签编写(只是一个模板),让我使用 jstl 标签逻辑输出一个 html 片段(一个 html 表),可以从我的 jsp 调用。

不写java类就可以做到,这是我在所有例子中看到的。

我想要实现的是将我的 JSP 中重复的 JSTL 逻辑外部化到自定义标记中,然后在运行时使用属性将所需的动态值传递给标记。

谢谢,

【问题讨论】:

    标签: jsp jstl jsp-tags


    【解决方案1】:

    不要使用小脚本!它们是一种不好的做法,它们会让业务逻辑泄漏到您的视图层中。

    您可以使用 JSTL 创建标签文件;这很简单。 This 是一个很好的起点。

    一个例子:

    mytable.tag

    <%@ attribute name="cell1" required="true" type="java.lang.String" description="Text to use in the first cell." %>
    <%@ attribute name="cell2" required="false" type="java.lang.String" description="Text to use in the second cell." %>
    
    <table>
     <tr>
      <td id = "cell1">${cell1}</td>
      <td id = "cell2">${cell2}</td>
     </tr>
    </table>
    

    假设你的标签在/WEB-INF/tags,那么你可以这样使用它:

    <%@ taglib prefix="mystuff" tagdir="/WEB-INF/tags" %>
    
    <mystuff:mytable cell1="hello" cell2="world" />
    

    【讨论】:

      【解决方案2】:

      在您的起始 JSP 上,您可以将条件的输出放入会话变量中,然后通过脚本在所有其他变量中使用该会话变量,而不是采用标记方法。如下所示:

      启动 JSP

      <% boolean doStuff = isMyConditionTrue ? true : false;
         session.setAttribute("doStuff", doStuff);
      %>
      

      其他 JSP

      <% if(session.getAttribute("doStuff") != null && (boolean)session.getAttribute("doStuff")) {
      %>
        //do stuff
      <% } %>
      

      【讨论】:

      • 在我的场景中,我想重新使用我的 jstl 的片段
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      相关资源
      最近更新 更多