我已经实现了一个自定义标记,它使用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
如何使其可解析?
答案 0 :(得分:0)
使用的自定义taglib来自JSP spec 1.0
,它不允许嵌套标记解释。
为了实现这一点,您需要使用JSP spec 2.0
taglib规范,该规范允许我们将JSP实现为taglib。
因此,它允许在一个taglib实现中使用多个标记。
.tag
文件中定义taglib内容以及外部taglibs 为了创建一个用户标签,我们需要遵循以下几个步骤:
创建一个标记文件,定义标记文件使用的属性以及标记将使用的任何变量
一个。属性需要具有名称,类型和必需字段,其布尔值为
湾变量将使用名称和特定范围定义 -
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"/>
定义要导入标记的条目,其中tagdir将是包含扩展名为.tag的标记文件的目录
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
最后根据标签定义使用标签传递必需的属性。
这里customTag
是标记文件的名称,以及定义的前缀
<tags:customTag name="Hello Tag!!" role="I am the boss here"/>
可以使用表达式语言
在调用者jsp中检索来自标记的变量集Hello $ {passBack}