primefaces - JSF ViewScoped bean 未实例化
问题描述
我有一个视图范围的 jsf 托管 bean,当我向它添加方法时它没有被实例化。此 bean 使用会话范围的 bean 并尝试从中访问数据。
示例代码。
@ManagedBean
@ViewScoped
public class DecodingBean implements Serializable {
private Charge charge;
@ManagedProperty(value = "#{configBean}")
private ConfigBean configBean;
public void setConfigBean(ConfigBean configBean) {
this.configBean = configBean;
}
@PostConstruct
public void initialize() {
charge = new Charge();
}
public void save() {
try (DbConnection dbConnection = DbUtil.getDbConnection();
MyDao1 myDao1= new MyDao1 (dbConnection );
MyDao2 myDao2= new MyDao2 (dbConnection )) {
charge.setPId(selectedPId);
charge.setSId(selectedSId);
charge.setStatusId(configBean.getNewStatusId());
myDao2.updateCharge(charge);
myDao1.deleteModifier(charge.getId(), ModifierType.P.toString());
insertChargeModifiers(charge, myDao1);
charge = new Charge();
} catch (Exception ex) {
LOG.error("Error saving Charge", ex);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error occurred while saving, please try again", ""));
}
}
如果我删除了保存方法,bean 就会被实例化。
解决方案
更正 jsf 库的版本后,此问题就消失了。我有 2.2.7 的 jar 和不同版本的 web-facesconfig。
仍然不确定这是原因,但它已经消失了。
推荐阅读
- sql - 如何在 SQL Server 中查找没有自动增量主键的表
- php - 类已定义但致命错误:未捕获错误:未找到类
- reactjs - 如何使用 react 和 redux saga 将新对象添加到现有状态
- angular - 如何在 Angular 中对行为主题进行单元测试
- javascript - 如何使用 vee-validate 和 vue-i18n 翻译字段名称
- oracle - 将参数附加到表名会删除点运算符
- hyperledger-fabric - 对等背书策略不起作用的超级账本结构
- codeigniter - 自动加载 form_validation 库
- python - 如何调整我的代码以适应 Django 升级?
- python - 如何在上一行仍在运行时跳转到另一行 python 代码