0

我有一个 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 序列,它的下一个值必须为页面加载时的属性设置

我正在使用@PostConstruct 注释来生成下一个值并设置该值。

问题是我在屏幕上有commandButton,它调用同一个bean中的一些方法,@PostConstruct在提交后被调用两次,DB2下一个值被调用

我只需要在页面加载期间而不是在提交期间获取下一个值

4

1 回答 1

1

当您的托管 bean 是请求范围时,这确实会发生。在每个 HTTP 请求上构建一个请求范围的 bean。初始请求计为一个请求。表单提交(回发)算作另一个请求。

如果您想让 bean 在与同一个视图交互的情况下一直存在,那么您应该将其设置为视图范围的视图。

@ManagedBean
@ViewScoped
public class AddDeviceBean {
    // ...
}

也可以看看:

于 2013-11-13T11:40:02.507 回答