标签: taglib

无法在嵌入式Jetty服务器中加载JSTL taglib

我正在编写一个在嵌入式Jetty实例中运行的Web应用程序.

当我尝试执行JSTL语句时,收到以下异常:

org.apache.jasper.JasperException:/index.jsp(1,63)PWC6188:绝对uri:http://java.sun.com/jsp/jstl/core无法在web.xml或jar文件中解析使用此应用程序部署

我在classpath上有以下jar

  • ANT-1.6.5.jar
  • ANT-1.7.1.jar
  • 蚂蚁发射-1.7.1.jar
  • 核心3.1.1.jar
  • 码头,6.1.22.jar
  • 码头-UTIL-6.1.22.jar
  • JSP的2.1-6.1.14.jar
  • JSP-API-2.1.jar
  • JSTL-1.2.jar
  • servlet的API-2.5-20081211.jar
  • servlet的API-2.5-6.1.14.jar
  • 标准1.1.2.jar

我的web.xml看起来像这样:

<?xml version="1.0" encoding="ISO-8859-1"?>  
    <web-app 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 h77p://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  
    version="2.4">  
    <display-name>test</display-name>  
</web-app>
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
<html>  
    <body>  
        <h2>Hello World!</h2>  
        <%= new java.util.Date() %><br/>  
        ${1+2}<br/>  
        <c:out var="${5+9}"/><br/>  
    </body>  
</html>
Run Code Online (Sandbox Code Playgroud)

我开始使用这样的嵌入式Jetty服务器:

Server server = new Server(80);  
WebAppContext context = new WebAppContext("pig-1.0-SNAPSHOT.war","/");
server.addHandler(context);
server.start();
Run Code Online (Sandbox Code Playgroud)

我花了两天时间尝试各种jar文件组合,web.xml配置和标签库声明,但无济于事.

如何在完整的JSTL支持下启动并运行嵌入式Jetty服务器?

java jstl jetty taglib embedded-jetty

15
推荐指数
3
解决办法
2万
查看次数

什么是"INFO:TLD跳过.URI已定义"是什么意思?

在eclipse中运行我的JSF 2应用程序时,我收到了几个跳过TLD的信息日志,因为它已经定义如下:

Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags/form is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jan 3, 2012 7:24:45 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Jan 3, 2012 …
Run Code Online (Sandbox Code Playgroud)

taglib java-ee jsf-2 tomcat7

15
推荐指数
1
解决办法
2万
查看次数

如何在liferay门户中显示错误消息?

如何在liferay门户中显示错误消息?我在liferay.com网站上看到,对于显示错误消息,我可以使用liferay-ui:标记库中的错误标记,但是它不起作用,如何使用它?

java jsp portlet taglib liferay

15
推荐指数
1
解决办法
1万
查看次数

找不到http://java.sun.com/jsf/facelets的标记库描述符

我有一个JSP

<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>
Run Code Online (Sandbox Code Playgroud)

但它有错误

绝对的uri:http://java.sun.com/jsf/facelets无法在web.xml或使用此应用程序部署的jar文件中解析

我有图书馆facelets-lib.jarjsf-facelets-1.1.10.jar,我想是的Facelets,但它们不包含JSP标签库描述符.

什么文件是正确的?

jsf jsp facelets taglib

13
推荐指数
1
解决办法
4万
查看次数

什么是taglib?

有人能解释一下taglib在Java编程方面的意义吗?它包含一个前缀和uri ...但是每个引用的是什么?我查了许多不同的网站,但坦率地说,我仍然对它是什么以及它做了什么感到困惑.

java taglib

13
推荐指数
1
解决办法
1万
查看次数

GWT/Eclipse/Jetty问题:Jasper无法解析标记库

我正试图在Eclipse中使用GWT托管模式,这个HOWTO.Servlet工作正常,我的GWT代码也是如此,但是我的所有JSP都因为以下错误而失败:

[WARN] /view/lniExecutiveSummary.htm
org.apache.jasper.JasperException: /WEB-INF/jsp/lni/lniExecutiveSummary.jsp(1,1) The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    [ trimmed ]
Run Code Online (Sandbox Code Playgroud)

在Tomcat 5x下部署时,此webapp可以正常工作; 在Eclipse中运行时,我似乎无法解决taglibs问题.我是Eclipse的新手,让它使用GWT + Maven所需的所有活动部件让我把头发拉出来.

更新:我不再使用Eclipse; 我已经切换(返回!)到Intellij IDEA.所以我不能诚实地评估你们所发布的答案.一旦某些投票行动发生,或者其他人使用其中一种方法报告成功,我将接受适当的答案.谢谢.

eclipse gwt jstl jetty taglib

12
推荐指数
1
解决办法
2848
查看次数

需要帮助尝试让Cmake找到第三方库

我目前有一个链接到两个第三方库的项目.这些库必须由它们自己构建,然后链接到项目.一个是taglib,另一个是zlib.我注意到当你在taglib目录中使用Cmake-gui程序时,你需要指定zlib的构建和安装位置.

我的目标是让CMake为我的程序做类似的事情.由于这些库存储的位置不一致,我如何提示用户提供所需库的路径?

我希望这足够具体.

c++ integration zlib cmake taglib

12
推荐指数
1
解决办法
1万
查看次数

如何将TLD和Tag Lib文件添加到Maven的jar项目中

我有一个打包为的Maven项目jar.

我还有一个打包为的Maven项目war.这个war项目有一个tld文件和一些xhtml文件(标签libs).战争项目的结构(基本上):

pom.xml
src
    main
       java
           ...
       webapp
           WEB-INF
               my-facelets.taglib.xml
               facelets
                   aTag.xhtml
                   anotherTag.xhtml
           META-INF
               my-facelets.taglib.tld
Run Code Online (Sandbox Code Playgroud)

然后出现了从war项目中删除那些xml,xhtml和tld文件并将它们打包到jar项目中的要求.所以我的第一次尝试是添加jar项目的POM:

<resources>
  <resource>
    <directory>src/main/tld</directory>
    <targetPath>META-INF</targetPath>
  </resource>

  <resource>
    <directory>src/main/taglib</directory>
    <targetPath>WEB-INF</targetPath>
  </resource>
</resources> 
Run Code Online (Sandbox Code Playgroud)

当然,将文件放入src/main/tld(我想导出的文件META-INF)和src/main/taglib(我想导出的文件WEB-INF)中.罐子是按照我的意愿创建的:

myjar
    com
        my
            classes
    WEB-INF

    META-INF
        my-facelets.taglib.tld
    WEB-INF
        ...
Run Code Online (Sandbox Code Playgroud)

然后我将这个新jar添加到我的第一个war项目中,作为maven依赖.

问题是那些在jar的META-INF,WEB-INF(jar在war里面WEB-INF/lib)内的.tld,.xhtml,.xml文件无法识别.显然他们应该直接进入战争结构,除非执行其他一些配置.这是必须要求的,因为多个war项目将使用jar项目的功能(类和标记库).

dependencies war taglib maven jsf-2

11
推荐指数
2
解决办法
1万
查看次数

子目录中的JSP标记文件,使用单个taglib前缀.那可能吗?

我目前用我的.tag文件声明:

<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
Run Code Online (Sandbox Code Playgroud)

标记文件路径的示例:

/WEB-INF/tags/test.tag
Run Code Online (Sandbox Code Playgroud)

我这样使用它们:

<t:test oneAttributeKey="oneAttributeValue">
   some content...
</t:test>
Run Code Online (Sandbox Code Playgroud)

我的问题:我不想把我的所有标签文件都放在一个文件夹"/ WEB-INF/tags"中.

我宁愿把它们放在不同的子目录中:

/ WEB-INF /标签/用户/

/ WEB-INF /标签/ widgetsA /

/ WEB-INF /标签/ widgetsB /

(......)

这是否可行,而不为每个人和每个人创建不同的taglib前缀

我想避免的例子:

<%@taglib prefix="t_users" tagdir="/WEB-INF/tags/users" %>
<%@taglib prefix="t_widgetsA" tagdir="/WEB-INF/tags/widgetsA" %>
<%@taglib prefix="t_widgetsB" tagdir="/WEB-INF/tags/widgetsB" %>
Run Code Online (Sandbox Code Playgroud)

我希望使用单个"t"前缀的示例:

<t:users/onetag oneAttributeKey="oneAttributeValue">
   some content...
</t:users/onetag>
Run Code Online (Sandbox Code Playgroud)

是否存在类似的解决方案?

更新:BalusC表明,通过在单个.tld中定义所有标记文件,可以只使用一个前缀.我想我的问题还不够明确:我想知道是否可以在多个子目录中使用标记文件,而不必在任何地方指定路径,除非在使用它们的元素中(例如: <T:用户/ onetag")!

我不喜欢JSP标签的是它们的行为与普通的JSP文件非常不同,即使它们实际上共享非常相似的内容.事实上,我甚至决定将所有jsp文件放在/ WEB-INF/tags /文件夹中,因此它们与标记文件并排(我必须选择/ WEB-INF/tags /,因为这文件夹对于标记文件是必需的,由于某种原因)!我不明白为什么我的一些包含HTML的文件会放在/ WEB-INF/jsp /和其他一些/ WEB-INF/tags/!!

我希望能够将jsp和标记文件分组到目录中,具体取决于它们的相关内容!示例:

 /WEB-INF/tags/users/userProfileLayout.tag
 /WEB-INF/tags/users/employeeProfile.jsp
 /WEB-INF/tags/users/employerProfile.jsp

 /WEB-INF/tags/widgetsA/widgetALayout.tag
 /WEB-INF/tags/widgetsA/oldWidgetA.jsp
 /WEB-INF/tags/widgetsA/newWidgetA.jsp
Run Code Online (Sandbox Code Playgroud)

但这迫使我在多个@tablib或.tld中声明每个子目录的路径,我觉得这有点不方便.我会忍受它,但我认为它可以改进.

java jsp jsp-tags taglib

11
推荐指数
1
解决办法
1万
查看次数

eclipse jsp函数fn:escapeXml是未定义的

我正在开始我的第一个谷歌应用引擎jsp项目.我从这里开始关注留言簿的教程:https://developers.google.com/appengine/docs/java/gettingstarted/introduction.我对数据存储步骤(https://developers.google.com/appengine/docs/java/gettingstarted/usingdatastore),并在该网页上的代码都直接粘贴到我的项目.代码编译和工作,但我得到fn:escapeXml调用下的红色波浪形下划线.我看到这些是来自taglib的函数,如下所述:http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm.那么,我如何让eclipse知道发生了什么,而不是认为这是一个错误?

eclipse jsp taglib

11
推荐指数
2
解决办法
1万
查看次数