我是 JSF (2) 的新手。
在 Struts 中,我们可以从像 app.action
这样的 URL 调用一个 Action 。这将调用一个操作并返回一个结果页面,比如一个 JSP(最初没有 JSP/HTML)。
如何在 JSF 中完成同样的事情? (我知道如何从 .xhtml 调用一个 Action ) IE。直接从 URL 调用托管 bean 并获取结果页面。
最佳答案
您所询问的模式并不是 JSF 工作方式的原生模式。
基于请求的框架,如 Struts 和 Spring MVC ,而旧的基于 Model-2 Servlet/JSP 的方法确实是这样工作的。
在 JSF 中,首先是自动映射到请求 URL 的页面( View )。没有直接映射到 URL 的 bean 的概念,也没有框架强制与 View 1:1 关系的 bean 的概念。虽然有支持 bean 的概念,但这是约定俗成的。对于 JSF,所有 bean 都是仅由 View 引用的“helper bean”。
BalusC 在他的回答中概述了当今可用于从 JSF 中基于请求的框架获取某些行为的流行方法。 JSF 2.2 将通过引入 view actions 稍微扩展这种支持。 ,它形式化了 preRenderViewEvent
的一些典型用例。
也就是说,JSF 是一个非常灵活的框架,几乎没有什么是一成不变的。许多 JSF 的行为都可以通过精心设计的插件和装饰器系统进行替换或添加。
对于这个用例,JSF 将 URL 绑定(bind)到 (Facelets) View 这一事实可以被覆盖,实际上您可以让 bean 直接对请求使用react。虽然目的略有不同,但这是我为 JavaVDL 所做的。 ,通过覆盖所谓的 View 处理程序。
您必须问问自己这是否真的是您想要做的,如果您想以这种方式工作,JSF 是否是您的最佳选择。但是通过 JavaVDL ( sourcecode here ) 中概述的方法,您应该能够做到这一点。请注意,最后一种方法不适合初学者,如果您想自己实现它,则需要大量的 JSF 经验。 (如果您或其他任何人想要拥有此功能,请考虑在 OmniFaces issues list 为其创建问题)。
关于java - JSF 2 : invoking managed bean directly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13488832/