在jar META-INF资源中的Servlet 3.0 tile定义

时间:2013-08-15 16:16:15

标签: struts2 jboss jboss7.x tiles servlet-3.0

我正在使用新的Servlet 3.0方法在JAR文件中打包Web资源(例如Javascript,CSS和JSP)。该方法表明,当应用程序启动时,JARROOT / src / META-INF / resources下的所有内容都将挂载到WAR根目录。所有的工作文件为CSS和Javascript,但没有太多的Struts瓷砖。

这是我在JAR中的结构:

base.jar
|--src/
|----META-INF/
|------base.tld
|------resources/
|--------base/
|----------css/
|----------js/
|----------baseTiles.xml

在我的应用程序(WAR)web.xml中,我得到了这个用于tile:

<context-param>
    <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
    <param-value>/WEB-INF/tiles.xml,/base/baseTiles.xml</param-value>
</context-param>

当我启动我的应用程序时,我没有得到任何关于baseTiles.xml的错误,所以我认为它将是tiles文件。但是,尝试从JSP引用tile(使用<tiles:insertAttribute>标记)将失败并显示

org.apache.tiles.jsp.taglib.NoSuchAttributeException: Attribute 'base.nav' not found.

您认为是什么?

摘要和其他信息:

  • 使用JBoss eap 6.1 Alpha
  • 使用Struts 2.1.4
  • 基础JAR包含在lib目录中的WAR
  • 基础JAR包含上面提到的所有文件(包括baseTiles.xml)

感谢您的帮助!!

2 个答案:

答案 0 :(得分:2)

问题解决了!必须指向web.xml中的正确架构...

<web-app version="3.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_1.xsd">

现在一切都在自动化!!

答案 1 :(得分:0)

这是3.1 servlet规范的正确模式定义:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">