0

我将 Geronimo 与 J2EE 5 和 Tomcat 6 一起使用,我正在尝试使用 JSF 创建一个简单的页面。我把标签库文件放进去,myfaces_core.tld它可以工作,但只是在 Windows 上。在 Linux 下,我在部署 WAR 时遇到了未知原因。删除两个标记库文件使部署成为可能。但是当我在浏览器中打开页面时出现错误。它缺少在JSP 文件头中指定的文件。在 MyFaces 的示例中,使用的不是 MyFaces TLD,而是常见的 Sun Java TLD。我已经覆盖了 ant 的 URI现在我收到错误The absolute uri: http://java.sun.com/jsf/htmlmyfaces_html.tldWEB-INFIOExceptionWEB-INF/myfaces_html.tldWEB-INF/myfaces_html.tldhttp://java.sun.com/jsf/html无法在 web.xml 或随此应用程序部署的 jar 文件中解析

我现在迷路了。我必须或必须不将标记库描述文件放入我的 WAR 以使用 JSF 组件吗?这些文件已经包含在 Geronimo Container 的 MyFaces JAR 中,不是吗?无论平台如何,容器都必须具有相同的行为,还是不需要?我应该怎么做才能创建真正独立于平台的简单应用程序?

4

1 回答 1

1

应该提取 3rd 方标记库的 JAR 文件并将其松散的 TLD 文件放在/WEB-INF文件夹中。TLD 文件应该保存在它们起源的 JAR 文件中,并且 JAR 文件应该保持不变,而只是被放到运行时类路径中。无论书籍/教程/论坛另有建议,都应列入黑名单。

清理您的项目结构以摆脱那些松散的 TLD 文件并撤消与此相关的所有更改,当然也可以在web.xml.

/WEB-INF/lib为了让 JSF 在 Tomcat 6 上运行,您的文件夹应该只包含两个文件:一个文件代表抽象 API,另一个文件代表具体实现。由于您显然选择使用 MyFaces,它将是这两个 JAR 文件(可能在文件名末尾带有版本号,这取决于):

  • myfaces-api.jar
  • myfaces-impl.jar

将它们放在/WEB-INF/lib作为 webapp 默认运行时类路径的一部分的文件夹中。就这样。下一步是FacesServlet在你的 webapp中声明和映射web.xml.

确保您正在阅读正确的书籍/教程。

于 2011-08-05T21:03:02.760 回答