0

我正在使用 jsf 技术开发一个网络应用程序。我希望在显示我的应用程序主页时调用我的支持 bean 的方法。通常,当用户单击链接或按钮时,会涉及支持 bean 方法。

简而言之,我希望我的支持 bean 从数据库中获取一些数据并将其发送到 jsf 页面,并且我希望在用户调用我的应用程序的主页链接时发生这种情况。

以下是我想要解决问题的方法:使用在调用预期链接时执行的 servlet,并从该 servlet 调用支持 bean;但问题是我在使用 web.xml 文件中的 servlet 的 url 模式时遇到了一些困难。我的应用程序的主页链接是:home.jsf。我的 servlet 的名称是 HomeServlet,这是我在 web.xml 文件中配置它的方式:

   <servlet>
       <servlet-name>HomeServlet</servlet-name>
       <servlet-class>utils.HomeServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
       <servlet-name>HomeServlet</servlet-name>
       <url-pattern>/home.jsf</url-pattern>
   </servlet-mapping> 

所以当我运行应用程序时,servlet 被执行,但我的 home.jsf 页面是空的(完全空白)。我不知道为什么。

所以我想知道的是:

  • 我是否对这个问题使用了正确的方法?

  • 如果是,我应该使用哪个 url 模式?

4

1 回答 1

0

不,这绝对不是正确的做法。您正在围绕 JSF 工作。您应该只在@PostConstruct请求的构造函数或方法或与视图关联的视图范围的 JSF 托管 bean 中完成这项工作。

例如

@ManagedBean
@RequestScoped
public class Home {

    public Home() {
        // Here.
    }

    @PostConstruct
    public void init() {
        // Or here. This will be invoked *after* any dependency injections,
        // such as @EJB, @ManagedProperty, @Inject, @Resource, etc.
    }

    // ...
}

每当 JSF 第一次遇到(or ) 中的#{home.someproperty}引用时,就会构造 bean。home.xhtmlhome.jsp

使用 JSF 进行开发时,您应该不需要开发其他 servlet。在 JSF 中,这FacesServlet是唯一的 servlet,它已经完成了所有必要的请求/响应和模型/视图控制工作。

于 2012-06-03T23:13:57.717 回答