我正在创建一个自定义标记库,并希望在我的一个组件中使用它。我已经创建了一个包,其中包括扩展TagSupport类的标记hello类,我创建了标记。我的资源文件夹下的tld文件
在我的pom中。xml,我使用了资源标记来包含我的。生成的jar文件中的tld文件。
这是我的java类和tld文件
标记类别:-
package com.cb;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
* Simple tag example to show how content is added to the
* output stream when a tag is encountered in a JSP page.
*/
public class Hello extends TagSupport {
private String name=null;
/**
* Getter/Setter for the attribute name
as defined in the tld file
* for this tag*/
public void setName(String value){
name = value;
}
public String getName(){
return(name);
}
/**
* doStartTag is called by the JSP container
when the tag is encountered */
public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
out.println("<table border=\"1\">");
if (name != null)
out.println("<tr><td> Welcome <b>" + name +
"</b> </td></tr>");
else
out.println("<tr><td> Hello World </td></tr></table>");
} catch (Exception ex) {
throw new Error("All is not well in the world.");
}
// Must return SKIP_BODY because we are not
//supporting a body for this
// tag.
return SKIP_BODY;
}
/**
* doEndTag is called by the
JSP container when the tag is closed */
public int doEndTag(){
return EVAL_PAGE;
}
}
我还成功地在felix控制台中安装了该捆绑包,没有出现任何错误。然后,我在jsp中编写了自定义标记,如下所示
JSP:-
<%@include file="/libs/foundation/global.jsp"%>
<%@ page import="com.testcb.TestCustomTag"%>
<%@ taglib prefix="mytest" uri="http://cs.test.com/bundles/cq/1.8"%>
<mytest:hello name="sachin"></mytest:hello>
我得到了类似“org.apache.sling.api.scripting.ScriptEvaluationException:org.apache.sling.scripting.jsp.jasper.jaspereException:/apps/test/components/content/test/test.jsp(4,0)无法加载标记处理程序类”的com。cb。标记“mytest:Hello”的“Hello”。
同样的代码在我的apache tomcat服务器中运行良好,没有任何问题。当我把它合并到CQ中时,我得到了错误。
我在这里干什么?是否需要在OSGI控制台中进行任何配置以使其可用?
更新:
包名称有问题。现在,我可以在重命名包名后读取标记处理程序类。
“无法加载标记处理程序类”错误也已消失。
现在我得到错误为"org.apache.sling.api.scripting.脚本评估异常:javax.servlet.ServletException:javax.servlet.jsp.JspException:com.testcb.TestCustomTag不能被转换为javax.servlet.jsp.tagext.标签"
我在pom中有以下依赖项。xml
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
这是我的tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<description>My tag library123</description>
<tlib-version>1.0</tlib-version>
<short-name>TagLib-Test</short-name>
<uri>http://cs.test.com/bundles/cq/1.0</uri>
<jspversion>2.1</jspversion>
<tag>
<name>testcustomtag</name>
<tagclass>com.testcb.TestCustomTag</tagclass>
<bodycontent>empty</bodycontent>
<info>This is a simple hello tag</info>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
jsp版本有问题吗?
请引导我解决。
谢谢
是的,在我删除pom中的标记后,它按预期工作。xml。这就是问题的原因。:)
谢谢
tags.tld文件需要在META-INF文件夹下。如果您还没有它,您可以在资源源文件夹下创建一个。
我正在尝试使用cq中的OSGI包创建自定义标记库。实际上,我创建了所有必要的文件,但我无法放置mytags。生成时META-INF文件夹下的tld文件。为此,我使用了maven bundle插件。这是我的代码,用于将资源包含在META-INF文件夹中 注意:我已将标记文件放在“src\main\resources\META-INF\myTags”下 我使用了<代码> 这是我的生成错误 [错误]捆绑
默认情况下,Navicat Monitor 从受监控的实例收集一组预设的服务器指标。你可能想要添加自己的查询,以收集特定实例的一些自定义性能指标,并在指标值超过某些阈值和持续时间时接收有关自定义数据的警报。若要配置自定义指标,请前往“配置”->“自定义指标”。 创建自定义指标和警报 在自定义指标页面中,点击“+ 新建自定义指标”。 【步骤一】输入自定义指标的定义: 指标名 输入自定义指标的名。 描
我在使用自定义标记库时发现了一个奇怪的问题。在我的一个jsp页面中,自定义tld文件的相对uri路径错误。 Taglib包含在jsp页面中,如下所示 此标记库包含在父jsp文件中,而不是从父jsp文件中导入/包含jsp文件。 我的应用程序还有几个其他jsp文件,其中相同的标记库与正确的路径一起使用。 相同的代码部署在多个测试环境中。在少数环境中,代码会抛出一个错误“找不到资源”,这是意料之中的。但
问题内容: 我正在尝试在javaFX中创建自定义光标。这是我的代码: Windows 8.1的游标创建无效吗? 问题答案: 检出ImageCursor.getBestSize()方法和ImageCursor.getMaximumColors()并查看它们返回的内容,然后尝试匹配最佳大小和最大颜色的自定义光标图像。对于Windows 8.1,这很可能是32x32的光标。 这是来自javadoc 的引
在我的随机测试中,我看到了一个行为,我把一个锚标签放在另一个锚标签里。我做了一个jsfiddle。 但在开发人员工具中,它似乎有所不同: 我相信我们不能将锚定标记放在另一个锚定标记内,因为单击内部锚定将使单击事件冒泡到父锚定标记,这是不允许的。 我的假设正确吗?
我还要做什么吗? 我在shell中使用的命令是: 现在,当我键入时,它显示: 我如何让这个标签出现在GitHub上?我的标签呢?