ICEfaces 2.0和h:没有调用commandButton方法,用ice:commandButton一切正常

时间:2011-06-13 13:57:02

标签: jsf file-upload icefaces cdi postconstruct

我正在尝试使用ace:fileEntry上传图片,因为我读到此组件需要从h:commandButton提交才能开始下载。我的问题是,当我用ice:commandButton切换h:时,我的托管bean(在对话范围内)再次被创建(@PostConstruct被调用)和h:commandButton中的方法并且fileEntryListener不再被调用。
而另一个可能造成这种情况的问题是,当我第一次进入我的页面时,托管bean被创建,我调用会话开始,但是当我做第二个请求(来自commandLink)时,再次创建托管bean ,然后启动一个新的对话,之后你可以玩多久你想要再次创建托管bean。
回到我最初的问题,如果我有ice:commandButton再次创建托管bean,如果它与h:一起再次创建。
并且为了在其中添加更多乐趣,如果我从ace:fileEntry删除渲染的属性(解析为true),则调用fileEntryListener,但h:commandButton的操作不是无论怎样都叫。
我尝试向组件添加显式ID,尝试使用ice:form更改h:form ..没有。

请帮助。

Ps:为什么ICEfaces 2不能用于所有ice组件,为什么它需要h:commandButton而不是ice:commandButton,为什么带有f:selectItems的新JSF 2.0内容由常规列表支持使用ice:selectOneMenu,只与h:selectOneMenu一起使用? ICEfaces有什么用?为什么CDI不能按预期工作,使用Seam 2我也遇到了两次调用的问题.. ps2:如果我没有导航到另一个视图?cid=1不存在于 URL < /强>

2 个答案:

答案 0 :(得分:2)

现在,使用ace:fileEntry和h:commandButton,ice:commandButton无法使用的原因是因为它是一个AJAX组件,浏览器不会在AJAX提交中上传文件。即使使用HTML5,它也不是自动的,必须使用新的File和XmlHttpRequest API。在HTML4浏览器中,只有整页,完整表单,提交将上传文件内容,只有h:commandButton以这种方式运行。有关详细信息,您可以在页面顶部附近看到:

http://wiki.icefaces.org/display/ICE/FileEntry

我们的ice:组件是h:组件的扩展变体,例如ice:selectOneMenu,它们缺少一些新的JSF 2功能,因为我们一直专注于我们新的高级组件环境,因为客户需求丰富的客户端组件。此外,重点是保持向后兼容冰:组件,以方便客户从ICEfaces 1.8.x迁移到ICEfaces 2.x,更不用说改变这些组件的行为。但我们仍在积极维护和改进冰:组件,并将很快添加新功能。随意在我们的Jira系统中创建任何增强请求,并对任何现有条目进行投票,因为这确实指导了我们的开发优先级。

http://jira.icefaces.org/

  • Mark Collette

答案 1 :(得分:1)

我是来自ICEfaces组件团队的Mark Collette,希望我能回答你的一些问题。

您的大多数问题似乎与CDI集成更相关,而不是组件本身的问题。我知道症状会根据你使用的组件而改变,但我认为这是因为ice:组件使用AJAX而h:组件则没有。很多时候,与其他框架的集成问题在AJAX交互中比在整页GET / POST交互中更容易观察到。因此,您的问题可能是由于我们的CDI集成或您的应用程序的配置。因此,请查看我们关于在CDI中使用ICEfaces的文档,如果您仍然遇到任何问题,我建议将详细信息发布到我们的论坛。

http://wiki.icefaces.org/display/ICE/Using+ICEfaces+with+CDI

http://www.icefaces.org/JForum/forums/list.page

[抱歉,但是这个论坛不允许我发布超过2个链接,所以我会将其余的帖子拆分成另一个帖子,希望这会有效]

  • Mark Collette