【问题标题】:How we call method before page is loaded in JSF?我们如何在页面加载到 JSF 之前调用方法?
【发布时间】:2014-01-09 08:12:03
【问题描述】:
@ManagedBean(name="bean")
@SessionScoped
public class MyBean{

@PostConstruct
public void postConstruct()
{
System.out.println("Inside post Construct");
}

public void beforePageLoad()
{
System.Out.println("Called before pageload for session scoped bean!!!");
}
}


How can we call beforePageLoad method everytime before the page loads.

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    在您的页面内:

     <f:metadata>
        <f:event type="preRenderView" listener="#{bean.listener}"/>
     </f:metadata>
    

    【讨论】:

    • 如果我们有一个接口,它有一个方法说 prePageLoad(),如果我们所有的托管 bean 都实现了这个接口,那么要调用这个方法,我们是否必须像阶段监听器一样编写监听器,因为我们在想在整个框架中使用这种方法,在页面加载之前调用 bean 中的方法?
    • 我不会绑定每个 bean 来执行这样的操作。我会创建一个 PrePageLoadBean 并使用不同的侦听器方法在一个或多个页面中执行
    • 但是我们不会违反 DRY 原则吗...感谢您的回复..并帮助您提出想法..
    • 很高兴提供帮助 ;) 使用单个 bean 来完成类似的操作会强制执行 DRY。您可以(应该)在多个页面/模板上使用相同的侦听器,并且可以在单个页面上使用多个侦听器。请记住,JSF 用途广泛,这只是一种策略:有无数种方法可以做到这一点,您应该使用您觉得更舒服的方法。
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2021-02-18
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多