1

selectBooleanCheckbox(CB) と 2 つの (IT1、IT2)がinputTextあり、すべて resp にバインドされています。豆畑。

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 : ''}")。これは、表示する前に変更する必要があるためです。

問題の説明を理解していただき、問題の解決に役立てていただければ幸いです。

4

1 に答える 1