失去的JSF初学者:Linux、Geronimo和标记库



我将Geronimo与J2EE 5和Tomcat 6一起使用,并且尝试使用JSF创建一个简单的页面。我把标签库文件myfaces_core.tldmyfaces_html.tldWEB-INF,它的工作,但只是在Windows上。在Linux下,当我部署WAR时,我得到了IOException 一个未知的原因。删除这两个标记库文件使部署成为可能。但是当我在浏览器中打开页面时,我得到了一个错误。它缺少文件WEB-INF/myfaces_html.tld,该文件在JSP文件的头中指定。在MyFaces的例子中,使用的不是MyFaces TLD,而是普通的Sun Java TLD。我已经将URI WEB-INF/myfaces_html.tld覆盖到http://java.sun.com/jsf/html,现在我得到错误绝对URI: http://java.sun.com/jsf/html无法在web.xml或与此应用程序部署的jar文件中解决。

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

您应该而不是提取第三方标记库的JAR文件并将其松散的TLD文件放在/WEB-INF文件夹中。TLD文件应该保存在它们产生的JAR文件中,JAR文件应该不受影响,只是放在运行时类路径中。任何书籍/教程/论坛都应该被列入黑名单。

清理您的项目结构,以摆脱那些松散的TLD文件,并撤销与此相关的每个更改,当然也包括web.xml,如果有的话。

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

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

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

确保你读了合适的书/教程

相关内容

  • 没有找到相关文章

最新更新