init()方法调用每个请求

时间:2014-01-14 11:38:39

标签: jsf servlets jsf-2 liferay

我正在使用JSF 2.0和Liferay 6.1

对任何Java类的请求都会调用我的init()。即使在PrimeFaces组件调用其相关的PrimeFaces Java方法的情况下也是如此。当我的portlet初始化时,该方法只应调用一次。

@ManagedBean
@ViewScoped
public class MyMangedBean {

    public void init() {
        System.out.println("Init method called");
    }
}

请帮我找出可能的解决方案。

修改

我找到了这个原因背后的组件

在我的xhtml文件中,我有

<bridge:inputFile id="MyFileUpload" size="50"
            binding="#{myBean.toBeUploadFile}" onchange="{fileSelected(this);}" style="position: absolute;height: 29px;width:107px;opacity:0;filter: alpha(opacity=0);z-index:100;"/>

每当我删除其绑定属性。我的项目运作正常。它不会多次调用init()。但是我需要这个属性来上传我的文件。

我将xml名称空间保留为

xmlns:bridge="http://portletfaces.org/bridge"

我还在pom.xml中保留了commons-io(版本1.3)和commons-filedownload(1.2.1)的依赖

我不知道这个组件还缺少什么,或者背后的实际原因是什么。

1 个答案:

答案 0 :(得分:1)

您应该考虑使用最新版本的Liferay Faces附带的bridge:inputFile标记,而不是来自portletfaces.org的旧版过时标记。

a nice demo here使用bridge:inputFile,您可以在Liferay tomcat门户网站实例上尝试,然后按照相同的pattern that it uses for file upload

该演示已经过测试,效果很好,并得到了Liferay的支持。

还有更多的演示在Liferay Portal 6.1上经过测试并运行良好。您可以下载它们的来源和build them for yourself as shown here。并按照the version scheme here确保您对齐Portal,Mojarra和Liferay Faces Bridge的正确版本。

希望有所帮助。

相关问题