如何在primefaces组件selectOneMenu和日历中切换禁用? 问题是当用户在日历中输入值时,应禁用 selectOneMenu 。但是当他从日历 删除价值时,应该再次启用selectOneMenu 。
我尝试过this solution,但由于这些组件没有动作属性,我无法弄明白。 我没有验证按钮我喜欢使用某些事件。
答案 0 :(得分:0)
您可以使用ajax事件来确定值是否已更改。
<p:calendar ... >
<p:ajax event="change" listener="#{bean.dateChange}" update="selectOneMenuId"/>
</p:calendar>
然后在你的bean中使用这样的东西:
private boolean disableSelectOneMenu = true;
public void dateChange(DateSelectEvent event) {
Date date = event.getDate();
if (date == null) {
disableSelectOneMenu = true;
} else {
disableSelectOneMenu = false;
}
}
并在禁用selectOneMenu的标签时使用disableSelectOneMenu属性。
答案 1 :(得分:0)
<p:calendar/>
和<p:selectOneMenu>
都有disabled
个属性。两个组件都有ajax事件,<p:calendar/>
有dateSelect
,<p:selectOneMenu/>
有change
。
因此,您需要创建一个bean方法,该方法将根据已进行的选择返回true
或false
并将其绑定到disabled
属性,并在选择后更新这些组件。
例如JSF部分:
<p:calendar id="calendar" value="#{bean.calendar}" disabled="#{bean.calendarDisabled}">
<p:ajax event="change" update="selector calendar" process="@this"/>
</p:calendar>
<p:selectOneMenu id="selector" disabled="#{bean.calendarDisabled != true}">
<p:ajax event="change" update="selector calendar" process="@this"/>
</p:selectOneMenu>
豆部分:
public boolean calendarDisabled(){
if(calendar != null){
return false;
}else{
//...do whatever you needs basing on your requirements
}
}