我有一个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}"/>