我正在编写一个在嵌入式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
我的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服务器?
在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) 如何在liferay门户中显示错误消息?我在liferay.com网站上看到,对于显示错误消息,我可以使用liferay-ui:标记库中的错误标记,但是它不起作用,如何使用它?
我有一个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.jar和jsf-facelets-1.1.10.jar,我想是的Facelets,但它们不包含JSP标签库描述符.
什么文件是正确的?
有人能解释一下taglib在Java编程方面的意义吗?它包含一个前缀和uri ...但是每个引用的是什么?我查了许多不同的网站,但坦率地说,我仍然对它是什么以及它做了什么感到困惑.
我正试图在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.所以我不能诚实地评估你们所发布的答案.一旦某些投票行动发生,或者其他人使用其中一种方法报告成功,我将接受适当的答案.谢谢.
我目前有一个链接到两个第三方库的项目.这些库必须由它们自己构建,然后链接到项目.一个是taglib,另一个是zlib.我注意到当你在taglib目录中使用Cmake-gui程序时,你需要指定zlib的构建和安装位置.
我的目标是让CMake为我的程序做类似的事情.由于这些库存储的位置不一致,我如何提示用户提供所需库的路径?
我希望这足够具体.
我有一个打包为的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项目的功能(类和标记库).
我目前用我的.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中声明每个子目录的路径,我觉得这有点不方便.我会忍受它,但我认为它可以改进.
我正在开始我的第一个谷歌应用引擎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知道发生了什么,而不是认为这是一个错误?