我有一个managedbean AddDeviceBean,用于实例化构造函数中屏幕中使用的所有域对象
public AddDeviceBean() {
device = new DeviceVO();
deviceacct = new DeviceAccountsVO();
deviceconfig = new DeviceConfigVO();
devicecurr =new DeviceCurrencyVO();
devicelink = new DeviceLinkVO();
devicetran = new DeviceTranVO();
devicecd = new DeviceCDVO();
deviceBlank = new DeviceBlankVO();
comments = new ArrayList<DeviceCommentsVO>();
}
我有一个DB2序列,其下一个值必须为pageload
上的属性设置我使用@PostConstruct注释生成下一个值并设置值。
问题是我在屏幕上有commandButton调用同一个bean中的某个方法,并且在提交后调用@PostConstruct两次并调用DB2下一个值
我只需要在页面加载期间获取下一个值,而不是在提交期间
答案 0 :(得分:1)
当您的托管bean是请求作用域时,确实会发生这种情况。每个HTTP请求都构造一个请求范围的bean。初始请求计为一个请求。表单提交(回发)计为另一个请求。
如果你想让bean在同一个视图中交互时生存,那么你应该把它变成一个视图范围。
@ManagedBean
@ViewScoped
public class AddDeviceBean {
// ...
}