设置值时是否可以使用三元运算符?
这样的事情:
...
<rich:calendar id="endDate" value="#{detailModel.afterObject.defaultDefinition == false ? detailModel.definitionEndDate : ''}"
datePattern="yyyy-MM-dd" enableManualInput="true"
disabled="#{detailModel.mode == detailModel.viewMode or detailModel.afterObject.defaultDefinition}">
<f:validateBean/>
</rich:calendar>
...
如果没有,有办法吗?
@BalusC
我试着更好地解释一下情况:
我(在其他元素中)有一个复选框,一个日期选择器和一个文本字段。选中该复选框后,应禁用日期选择器和文本字段并清空。 我最初用
解决了这个问题<h:selectBooleanCheckbox id="isDefaultDefinition" value="#{detailModel.afterObject.defaultDefinition}" onclick="emptyEndDateField()" disabled="#{detailModel.mode == detailModel.viewMode or !loggedUser.isAdmin()}">
<f:ajax render="endDate startTime/>
</h:selectBooleanCheckbox>
<h:inputText id="startTime" value="#{detailModel.afterObject.startTime}"
disabled="#{detailModel.mode == detailModel.viewMode or detailModel.afterObject.defaultDefinition}">
<f:validateBean/>
</h:inputText>
<rich:calendar id="endDate" value="#{(detailModel.afterObject.defaultDefinition == false) ? detailModel.definitionEndDate : ''}"
datePattern="yyyy-MM-dd" enableManualInput="true"
disabled="#{detailModel.mode == detailModel.viewMode or detailModel.afterObject.defaultDefinition}">
<f:validateBean/>
</rich:calendar>
我还添加了一个小的javascript来设置值
<script type="text/javascript">
//<![CDATA[
function emptyEndDateField()
{
if(document.getElementById("detailForm:isDefaultDefinition").checked)
{
document.getElementById("detailForm:endDateInputDate").value = "";
document.getElementById("detailForm:startTime").value = "some default value";
}
}
//]]>
</script>
从定义了这些元素的页面(A),有可能进入/跳转到另一个页面(B)然后从B回到A.当我从A到B时,实际上是值在A中设置存储在bean中。当我回到A时,重新加载值,现在如果我修改了复选框,以前保存到文本字段和日期选择器中的值总是被重新加载,因为更改复选框不会触发bean中的“数据保存”并且日期选择器和文本字段的值与从A到B之前设置的值相同。
我希望现在的情况更加清晰:)