jps*_*ube 5 jsf primefaces wildfly
我已经在WildFly论坛上问了这个问题,但到目前为止还没有得到任何答案.所以我在这里尝试.
自从我从WildFly 8.1升级到8.2后,我在连接到bean的tabView中遇到了一个commandButton问题.
这是一个简单的JSF页面:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form>
<p:tabView binding="#{testBean.tabView}">
<p:tab title="Tab">
<p:commandButton value="Inside" action="#{testBean.testInside}"/>
</p:tab>
</p:tabView>
<p:commandButton value="Outside" action="#{testBean.testOutside}"/>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
和豆:
@Named
@SessionScoped
public class TestBean implements Serializable {
private TabView tabView = new TabView();
public TabView getTabView() {
return tabView;
}
public void setTabView(TabView tabView) {
this.tabView = tabView;
}
public void testInside() {
System.out.println("inside");
}
public void testOutside() {
System.out.println("outside");
}
}
Run Code Online (Sandbox Code Playgroud)
单击"内部"按钮会触发testInside() 两次."外部"按钮(tabView外部)表现正常,只触发一次方法.删除tabView绑定可以消除此问题.我正在使用PrimeFaces 4.0.
谢谢你的任何想法
一月
这是一个Mojarra'问题',由2.2.7中的性能优化修复程序引入.
这是一个Mojarra"问题",我在RF-13920工作时发现它,它是由JAVASERVERFACES-3193引入的.在对服务器的请求期间,不会重新创建使用绑定的组件,但是它们的子节点是.原始子项仍在原位插入新子项会导致"重复ID"错误.
所以看起来你的按钮被添加了两次,但由于你没有分配一个明确的id,你没有得到重复的id错误...可能会尝试一下(添加一个显式的id)
JSF规范规定绑定只应在Request范围内使用,因此如果在Conversation范围内失败,我认为不应将其视为错误.
最后一句话是有趣的.正如jboss网站上的下一篇文章所述:
但是现在我认为我对这个问题有一个令人满意的解决方案,并且我可以确认,对于组件绑定的请求范围的后备bean,异常和重复id问题不再发生,即使使用Wildfly-8.2的Mojarra 2.2.8也是如此. 0.Final!
如果页面的其余逻辑仍保留在(例如)会话范围bean中,则甚至是这样.您只需要为绑定属性设置一个请求范围的bean,然后可以在EL和其他bean中引用它.
查看这篇文章
| 归档时间: |
|
| 查看次数: |
2660 次 |
| 最近记录: |