javascript - ajax - jsf - bean交互

时间:2013-05-16 12:02:00

标签: ajax jsf-2 richfaces

我有一个selectBooleanCheckbox(CB)和两个inputText s(IT1,IT2)全部受限制。豆田。

选择CB时,我希望IT1和IT2的值设置为默认值并禁用,而取消选择CB时,必须启用和清空IT1和IT2。

目前我试过这种方式:

<script type="text/javascript">
  //<![CDATA[ 
    function myFunction()
    {
      if(document.getElementById("detailForm:CB").checked)
      {
        document.getElementById("detailForm:IT2").value = "";
        document.getElementById("detailForm:IT1").value = "00:01";
      }
    }
  //]]>
</script>

<h:selectBooleanCheckbox
   id="CB"
   value="#{detailModel.afterObject.defaultDefinition}"
   onclick="myFunction()"
   disabled="#{detailModel.mode == detailModel.viewMode or !loggedUser.isAdmin()}">
     <f:ajax render="IT1 IT2 @this" execute="@this"/>
</h:selectBooleanCheckbox>

<h:inputText
  id="IT1"
  value="#{bean.IT1}"
  disabled="#{detailModel.mode == detailModel.viewMode or bean.CB}" />

<rich:calendar
  id="IT2"
  value="#{(bean.CB== false) ? detailModel.IT2 : ''}"
  datePattern="yyyy-MM-dd"
  enableManualInput="true"
  disabled="#{detailModel.mode == detailModel.viewMode or bean.CB}"/>
</rich:calendar>

如果我创建一个新的对象/ bean,那一切都没问题。

问题在于我想编辑现有的对象/ bean:使用f:ajax render="IT1 IT2 @this" execute="@this"重新加载页面,旧值覆盖javascript函数设置的值......

IT2的值不直接限制在bean(value="#{(bean.CB== false) ? detailModel.IT2 : ''}")。这是因为它必须在显示之前进行修改。

我希望你理解我对这个问题的描述并帮助我解决它。

1 个答案:

答案 0 :(得分:0)

使用 ActionListener 复选框并重置侦听器方法中的有界复选框值(最好将此方法放在现有的操作bean类中)并使用 render 属性获取那些输入字段的当前值。