Java 使用RichFaces选项卡面板提交表单时,数据模型不会更新

Java 使用RichFaces选项卡面板提交表单时,数据模型不会更新,java,jsf,richfaces,Java,Jsf,Richfaces,我的页面中有以下布局(简化) 使用javascript可以相当容易地做到这一点。您所需要做的(一旦设置了选项卡)就是添加逻辑来显示和隐藏不同的选项卡组件。首先,将更改为,这样您的提交将通过ajax请求发送到服务器。此外,您还可以在操作后重新提交页面内容 要发出成功的动作ajax请求,请更改Save方法以返回一个void,这样JSF就不会遵循导航规则。如果您使用的是JSF2,那么bean应该具有视图范围,否则它应该具有请求范围和KeepAlive注释 RichFaces3.3bean实现 @

我的页面中有以下布局(简化)



使用javascript可以相当容易地做到这一点。您所需要做的(一旦设置了选项卡)就是添加逻辑来显示和隐藏不同的选项卡组件。

首先,将
更改为
,这样您的提交将通过ajax请求发送到服务器。此外,您还可以在操作后重新提交页面内容


要发出成功的动作ajax请求,请更改
Save
方法以返回一个void,这样JSF就不会遵循导航规则。如果您使用的是JSF2,那么bean应该具有视图范围,否则它应该具有请求范围和
KeepAlive
注释

RichFaces3.3bean实现

@KeepAlive
public class Bean {
    public Bean() {
    }
    public void save() {
    }
}
@ManagedBean
@ViewScoped
public class Bean {
    public Bean() {
    }
    public void save() {
    }
}
JSF2/RichFaces4.xbean实现

@KeepAlive
public class Bean {
    public Bean() {
    }
    public void save() {
    }
}
@ManagedBean
@ViewScoped
public class Bean {
    public Bean() {
    }
    public void save() {
    }
}

解决方案已经找到:我已经将tabpanel的switchType从“ajax”更改为“client”。谢谢大家的建议

问题不在于显示或隐藏选项卡式组件。问题是隐藏选项卡中的值没有传播到数据模型,尽管它们是通过HTTPSorry提交的。对不起,我的意思是将所有表单元素放在一个表单上,并用javascript隐藏表单的不同部分。似乎每个选项卡都有自己的表单功能?这不是一个选项,我们有一堆页面是使用tab panel实现的,我想用这种方法解决问题。当页面呈现时,每个选项卡是否都包含自己的表单?不,所有选项卡都是一种表单,正如上面的标记中所指定的,您的解决方案也不起作用。如果您在每个
中使用不同的bean,那么它们应该具有
@KeepAlive
标记和请求范围(RF 3.x)或视图范围(JSF 2/RF 4)。也许如果你发布一个你正在做的事情的示例,我可以编辑我的帖子来给出一个准确的答案,而不是猜测你会做什么。解决方案已经找到:我已经将tabpanel的switchType从“ajax”改为“client”