使用初始值切换PrimeFaces

  • 本文关键字:PrimeFaces jsf primefaces
  • 更新时间 :
  • 英文 :


我有一个PrimeFaces inputSwitch:

<p:inputSwitch id="snoozeSwitch" value="#{dashBController.snooze}" valueChangeListener="#{dashBController.updateSnoozeStatus}">
    <p:ajax listener="#{dashBController.updateSnoozeStatus}" update="msgSnooze" />
</p:inputSwitch>

现在我想给这个开关一个初始值从我的数据库。我用

得到值
@PostConstruct
public void init() {
    if (!FacesContext.getCurrentInstance().isPostback()) {
        snooze = getSnoozeStatus();
    }
}

但是我在用新值更新旧值时遇到了麻烦。

public void updateSnoozeStatus() {
  if(snooze == true) {
    DBconnector.updateSnooze("true");
  } else {
    DBconnector.updateSnooze("false");
  }
}

问题:我的应用程序总是使用初始值,所以开关被卡在它最初的状态。也许@BalusC知道答案:)

除非我错过了你的解决方案似乎复杂的东西非常简单。为什么不使用getter和setter呢?

getter应该从数据库中加载值,setter应该保存它。我不能测试下面的代码,因为我没有PF 5.0.4,但这应该是一个好的开始。

public class DashBController {
  private Boolean snooze = null;
  public boolean isSnooze() {
    if (snooze == null) {
      snooze = getSnoozeStatus();
    }
    return snooze;
  }
  public void setSnooze(boolean snooze) {
    this.snooze = snooze;
    DBconnector.updateSnooze(this.snooze.toString());
  }
}

和简单的:

<p:inputSwitch id="snoozeSwitch" value="#{dashBController.snooze}"/>

相关内容

  • 没有找到相关文章

最新更新