如何在页面刷新JSF时停止来自@ManagedBean类的自动方法调用

时间:2016-06-12 16:58:18

标签: jsf el

在我的XHTML页面中,我从@ManagedBean类调用一个方法。只有当我点击与方法链接的链接时才应执行该方法:

  <h:link value="Continue Reading &raquo;" 
       outcome="contracts/resources/data/imag2_facebook.html"  
onclick="#{sessionFilter.incForLink2('contracts/resources/imagini/facebook.jpg','Facebook down? Current problems and status', 'contracts/resources/imagini/facebook.jpg')}" />

为什么在没有点击链接的情况下在每次页面刷新时执行该方法都很奇怪。我希望只有在点击链接时才能执行该方法。我也试过用h:commandLink但结果是一样的。你知道我需要改变什么,或者出了什么问题? @ManagedBean类是应用程序作用域。我打电话的方法如下:

public void incForLink2(String link, String title, String imgAllLink) {
    Article article = links.get(link);
    if (article != null) {
        Integer pageHits = article.getPageHits();
        article.setPageHits(pageHits + 1);
        System.out.println(link + " = " + pageHits);
    } else {
        Article article1 = new Article(1, title, link, imgAllLink);
        links.put(link, article1);
    }
}

1 个答案:

答案 0 :(得分:-1)

onClick是webbrowser中JavaScript的处理程序!您调用的方法是Java并在服务器上执行!

Java在网站发送到webbrowser之前呈现网站,在此阶段是调用方法。发送到webbrowser后,可以执行javascript,这是第二阶段。您只需要向服务器发出一个新请求来执行java方法。我更喜欢使用a4j:jsFunction