web.xml文件的jsf和url-pattern

时间:2012-06-03 21:51:09

标签: jsf

我正在使用jsf技术开发一个Web应用程序。我想要一个我的支持bean的方法 显示我的应用程序的主页时调用。通常,支持bean方法 当用户点击链接或按钮时参与其中。

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

以下是我想要解决问题的方法:使用在何时执行的servlet 调用预期的链接,并从该servlet调用支持bean;但问题 我在web.xml文件中的servlet的url-pattern遇到了一些困难。我的应用程序的主页链接是: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页面是空的(完全空白)。我不知道为什么。

所以我想知道的是:

  • 我是否使用正确的方法处理此问题?

  • 如果是,我应该使用哪种网址格式?

1 个答案:

答案 0 :(得分:0)

不,这绝对不是正确的做法。你正在努力解决JSF问题。您应该只在请求的构造函数或@PostConstruct方法中执行该工作,或者查看与该视图关联的作用域JSF托管bean。

E.g。

@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第一次在#{home.someproperty}(或home.xhtml)中遇到home.jsp引用时,就会构造bean。

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