【问题标题】:JSF2 environment set upJSF2环境搭建
【发布时间】:2012-01-23 14:08:21
【问题描述】:

我是一名新的 Web 开发人员,甚至正在努力使用 Eclipse 设置本地开发环境。我的目标是最终将我的想法放到一个很酷的网站上,该网站可以托管在 64MB 私有 JVM Tomcat 6 服务器 (here) 上。

我尝试了所有可以持续 4 天阅读大量教程站点的方法,并想出了一个可以下载的 Eclipse 项目。 download.

集成这么多框架让我不知所措(我以前不是开源人员),我觉得自己被困住了。以下是我的一些问题。

  1. 为什么当我在本地机器上的 Tomcat 6 服务器上运行上面的项目时,我必须使用“http://localhost/richfaces-tomcat6/”访问它我希望能够使用“http://”访问它本地主机/Namo/”。因为“Namo”将成为我的网站名称。
  2. 为什么“http://localhost/richfaces-tomcat6/index.xhtml”根本不显示inputText?
  3. 为什么我不能对托管 bean 使用“@Named”注解?相反,我必须使用“@ManagedBean”。我读到了一些@ManagedBean 真正适用于遗留系统的地方。这有关系吗?
  4. 我正在尝试使用站点上的一些 Ajax 功能在 JSF 2 中编写代码。我读了一些 Richfaces 有用的地方。我在设置这些方面是否走在正确的轨道上?

我知道我问了很多问题。我已经准备好在本地设置一些东西并为 JSF 编写书籍,但我什至无法开始使用它,这非常令人沮丧。如果有人能帮助我或引导我走向正确的方向,我将不胜感激。

【问题讨论】:

  • 以后,请在单独的问题中提出个别问题。

标签: java jsf tomcat richfaces


【解决方案1】:

您有严重的内存限制,所以我最好建议为您的页面和 MVC 框架(如 Struts)查看轻量级模板引擎,如 VelocityFreemarker /Struts 2Spring MVC

【讨论】:

    【解决方案2】:

    1, 2 JSF 2.0 tutorial with eclipse tomcat

    3 @ManagedBean makes sense for applications that use JSF but do not use JSR 299

    4 是的,你可以使用 RF 做一些很酷的事情,jsf 2.0 也支持<f:ajax>,所以如果没有使用默认实现的 RF,你也可以做 AJAX 的事情

    【讨论】:

      【解决方案3】:

      当我在本地机器上的 Tomcat 6 服务器上运行上述项目时,我必须使用“http://localhost/richfaces-tomcat6/”访问它,我希望能够使用“http”访问它://localhost/Namo/”。因为“Namo”将成为我的网站名称。

      上下文路径默认为 Eclipse 项目名称。您应该已经在 Eclipse 项目创建向导的最后一个步骤中编辑了上下文路径。之后您可以随时在项目属性的 Web 项目设置 部分中对其进行编辑(右键单击项目并选择 Properties)。


      为什么“http://localhost/richfaces-tomcat6/index.xhtml”根本不显示inputText?

      显然请求 URL 与 web.xml 中定义的 FacesServlet 的 URL 模式不匹配。给定的 URL 期望它被映射到 *.xhtml<url-pattern> 上。 Eclipse 默认为/faces/* 和/或*.jsf,并要求您通过http://localhost/richfaces-tomcat6/faces/index.xhtmlhttp://localhost/richfaces-tomcat6/index.jsf 打开页面。但是将FacesServlet 映射到*.xhtml 上要好得多。


      为什么我不能对托管 bean 使用“@Named”注解?相反,我必须使用“@ManagedBean”。我读到了一些@ManagedBean 真正适用于遗留系统的地方。这有关系吗?

      @Named 注释是 CDI 的一部分,它是 Java EE 6 的一部分。然而,Tomcat 是一个简单的 JSP/Servlet 容器,而不是一个成熟的 Java EE 容器。如果您想在 Tomcat 上使用 CDI,您要么需要自己安装 CDI,要么将 Tomcat 替换为更成熟的 Java EE 容器,例如 Glassfish 3 或 JBoss AS。另请参阅Weld documentation(Weld 是 CDI 参考实现的代号)。请注意,您不一定需要 CDI 来让 JSF 运行。使用 @ManagedBean 对于简单的 Web 应用程序应该足够了。


      我正在尝试使用网站上的一些 Ajax 功能在 JSF 2 中编写代码。我读了一些 Richfaces 有用的地方。我在设置这些方面是否走在正确的轨道上?

      JSF2 已经通过 <f:ajax> 标记支持 Ajax。 RichFaces 只是一个在standard component set 之上提供more enhanced components and skinnability support 的组件库。另见Communication in JSF 2.0

      【讨论】: