2014-01-14 58 views
3

我使用JSF 2.0和Liferay的6.1init()方法调用在每次请求

在任何类型的请求,任何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中保持依赖于公共-10(1.3版本)和commons-filedownload(1.2.1)

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

+0

你是如何引用该方法? –

+0

当我的JSF portlet不应该调用之后,应该初始化这个方法。但在我的情况下,初始化后任何调用或请求任何其他后端java方法正在调用此方法。 –

+0

给定的代码不足以理解您的具体问题,这似乎与liferay如何管理bean有关。 –

回答

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确保您对齐门户网站,Mojarra和Liferay Faces Bridge的正确版本。

希望有所帮助。

相关问题