条件值设置

时间:2013-03-13 15:52:11

标签: jsf-2 richfaces facelets

设置值时是否可以使用三元运算符?

这样的事情:

...
<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之前设置的值相同。

我希望现在的情况更加清晰:)

0 个答案:

没有答案
相关问题