PrimeFaces切换初始值

时间:2015-08-13 13:12:36

标签: jsf primefaces

我有一个PrimeFaces inputSwitch:

Clock Domain:

现在我想从我的数据库给这个开关一个初始值。我得到的价值是:

<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();
    }
}

问题:我的应用程序始终使用初始值,因此开关会停留在原来的状态。也许@BalusC知道答案:)

1 个答案:

答案 0 :(得分:0)

除非我遗漏了某些东西,否则你的解决方案似乎很简单。你为什么不只使用吸气剂和定位器?

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}"/>