【问题标题】:How to tell which class handles a request in Java Server Faces?如何判断哪个类处理 Java Server Faces 中的请求?
【发布时间】:2015-09-14 16:31:18
【问题描述】:

我正在接管一个基于 Java Server Faces 的项目(项目创建于 2009 年左右,所以是 JSF 1.0?)。我还没有弄清楚 JSF 如何处理前端控制器逻辑,即 Faces servlet 如何确定将 GET 或 POST 转发到哪个 Java 类。例如,Spring MVC 有“@Request”注解。 JSF 是如何做到的?

这是一个非常有用的链接,但没有具体回答我的问题。我想知道 JSF 如何将 GET 或 POST 绑定到 Java 类。原来是ice:commandButton中的“action”项,例如

        <ice:form id="footForm">
            <ice:commandButton id="cancelButton" value="Cancel" action="#{ProductMB.cancel}"></ice:commandButton>
            <ice:commandButton id="saveButton" value="Save" action="#{ProductMB.save}" disabled="#{ProductMB.notAllRequiredFieldsEntered}"></ice:commandButton>
        </ice:form>

【问题讨论】:

  • JSF 不是基于请求的框架;它是一个基于组件的框架。一个 Facelets 页面可能会引用多个 backing-bean,尽管在我的项目中,大多数页面都设计为仅引用一个。在您的 Facelets 页面中,查找像 value=#{personBean.person} 这样的代码行。 personBean 将是某个 bean 的名称,可能是 PersonBean.javaperson 将是该 bean 的属性。真的,虽然你最好看看一些教程,因为你有很多东西要学。
  • 我希望它不是 JSF 1.0。 JSF 2.0 于 2009 年发布,据我所知,它更容易使用。
  • 停止。你走错了方向。暂停当前​​的项目,去找一本像样的 JSF 书,然后抽出时间来阅读它。这里是您获取 JSF 资源的起点:stackoverflow.com/tags/jsf/info 然后,在根据本书的经验对 JSF 代码进行了深入的练习之后,继续该项目。否则,将成为一场灾难。

标签: jsf model-view-controller front-controller


【解决方案1】:

JSF 的开箱即用模型与您习惯使用的 spring mvc 模型有些不同。请求处理程序通常映射到 /webapp 目录下的 jsp 文件,因此 /webapp/home.xhtml 文件在 /yourwebapp/home.jsf 下提供服务

JSF 页面通常使用表达式语言从托管 bean 上下文中提取它们的依赖项。这些 bean 要么在 faces-config.xml 应用程序配置文件中声明(看起来很像 spring 配置文件)。如果是这种情况,您将能够看到所有托管 bean 所在的位置。否则,它们将通过托管 bean 类本身的 @ManagedBean 注释来声明。

我认为 JSF 有许多其他风格,但本教程应该让您开始了解香草版本的工作方式:

http://www.tutorialspoint.com/jsf/jsf_first_application.htm

【讨论】:

  • 感谢您的教程 - 我在其中找到了答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2015-09-06
  • 2013-04-18
  • 2010-10-15
  • 2022-06-16
  • 2020-01-05
  • 2011-01-11
相关资源
最近更新 更多