【问题标题】:JSF ViewScoped bean not instantiatingJSF ViewScoped bean 未实例化
【发布时间】:2018-06-11 17:03:18
【问题描述】:

我有一个视图范围的 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 就会被实例化。

【问题讨论】:

  • 您是否看到任何错误消息?如果您的某些类在另一个项目中并且未添加到 War 的部署程序集中,请检查您的日志以查看是否收到 ClassNotFoundException。
  • @Ravi 是对的......调试......

标签: primefaces java-8 jsf-2.2 tomcat8 managed-bean


【解决方案1】:

修正 jsf 库版本后,此问题消失。 我有 2.2.7 的 jar 和不同版本的 web-facesconfig。

仍然不确定这是不是这个原因,但它已经消失了。

【讨论】:

  • 那你现在用的是什么版本? 4.3.1?以及哪种实现方式?
  • JSF 2.2.0 和 primefaces 6.2.3
  • 所以您从 2.2.7 升级到 2.2.0 进行修复?奇怪......然后我会去2.2.14
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2014-02-14
  • 2012-09-29
相关资源
最近更新 更多