我正在使用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页面是空的(完全空白)。我不知道为什么。
所以我想知道的是:
我是否使用正确的方法处理此问题?
如果是,我应该使用哪种网址格式?
答案 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,它已经完成了所有必要的请求/响应和模型/视图控制工作。