自定义标记中的JSTL未解析

时间:2017-07-04 12:03:22

标签: jsp jstl

我已经实现了一个自定义标记,它使用JSTL核心和格式库来打印有关已登录用户的一些信息。一切正常,但JSP中没有解析IFS

在页面中,不解释<fx:application id="SId" name="s" mainClass="packageName"/> <fx:jar destfile="${artifact.temp.output.mainJar}/S.jar"> <fx:application refid="SId"/> <fileset dir="${artifact.temp.output.mainJar}" excludes="**/*.jar"/> <fx:resources> <fx:fileset dir="${artifact.temp.output.mainJar}" includes="**/*.jar" /> </fx:resources> <fx:platform javafx="2.1+"> <fx:property name="file.encoding" value="UTF-8"/> </fx:platform> <manifest/> </fx:jar> <fx:deploy width="600" height="400" updatemode="background" outdir="${artifact.temp.output.mainJar}/deploy" outfile="S" nativeBundles="image"> <fx:application refid="SId"/> <fx:resources> <fx:fileset dir="${artifact.temp.output.mainJar}" includes="**/*.jar"/> </fx:resources> <fx:info> <fx:icon href="${basedir}/build_scripts/${iconFileName}" /> </fx:info> <fx:platform javafx="2.1+"> <fx:property name="file.encoding" value="UTF-8"/> </fx:platform> </fx:deploy>

这是我的代码:

navbar.tld

getJspContext().getOut().println("<fmt:message key='search'/>");

NavbarTagHandler

<fmt:message

如何使其可解析?

1 个答案:

答案 0 :(得分:0)

使用的自定义taglib来自JSP spec 1.0,它不允许嵌套标记解释。 为了实现这一点,您需要使用JSP spec 2.0 taglib规范,该规范允许我们将JSP实现为taglib。

因此,它允许在一个taglib实现中使用多个标记。

  1. .tag文件中定义taglib内容以及外部taglibs
  2. 以通用格式
  3. 引用taglib

    精化

    为了创建一个用户标签,我们需要遵循以下几个步骤:

    1. 创建一个标记文件,定义标记文件使用的属性以及标记将使用的任何变量

      一个。属性需要具有名称,类型和必需字段,其布尔值为

      湾变量将使用名称和特定范围定义 -

      NESTED(在标签正文中可用),

      AT_BEGIN(在标记内直到范围结束)和

      AT_END(从标记的结尾到范围的结尾)

          <%@ attribute name="name" required="true" type="java.lang.String" description="Name of User"  %>
          <%@ attribute name="role" required="true" type="java.lang.String" description="Role of User" %>
          <%@ variable name-given="passBack" scope="AT_BEGIN"%>
          <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      
          <h1>${name}</h1>
          <h2>${role}</h2>
      
          <%String backToCaller="Back to caller";%>
          <c:set var="passBack" value="Pass back successful"/>
      
    2. 定义要导入标记的条目,其中tagdir将是包含扩展名为.tag的标记文件的目录

      <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
      
    3. 最后根据标签定义使用标签传递必需的属性。 这里customTag是标记文件的名称,以及定义的前缀

      <tags:customTag name="Hello Tag!!" role="I am the boss here"/>
      
    4. 可以使用表达式语言

      在调用者jsp中检索来自标记的变量集

      Hello $ {passBack}