MyFaces Tomahawk
  1. MyFaces Tomahawk
  2. TOMAHAWK-1577

t:inputCalendar disabled status is not working with f:ajax

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.11-SNAPSHOT
    • Fix Version/s: 1.1.11
    • Labels:
      None
    • Environment:
      Win XP, JDK 1.6.0.20, Tomcat 6.0.29, MyFaces 2.0.6 - Snapshots (built from trunk of 09-04-2011), Tomahawk20-1.1.11 Snapshot (built from trunk of 09-04-2011)

      Description

      I'm using a t:selectBooleanCheckbox with ajax functionality and the t:inputCalendar component. The calendar should be enabled if the checkbox is checked and vice versa. By default the checkbox is unchecked and the calendar disabled. The disabled calendar does not show the (disabled) button for the popup at all. If the checkbox is checked the calendar stays disabled.

      See demo source code below:

      <t:selectBooleanCheckbox id="aCheckbox" value="#

      {mybean.aCheckbox}

      ">
      <f:ajax event="valueChange" render="aDate" />
      </t:selectBooleanCheckbox>

      <t:inputCalendar id="aDate"
      monthYearRowClass="yearMonthHeader"
      weekRowClass="weekHeader"
      popupButtonStyleClass="standard_bold"
      currentDayCellClass="currentDayCell"
      value="#

      {mybean.aDate}

      "
      renderAsPopup="true"
      popupTodayString="today"
      popupDateFormat="dd.MM.yyyy"
      popupWeekString="week"
      forceId="true"
      disabled="#

      {mybean.aCheckbox == false}

      " />

      Maybe this ajax issue is related to this ticket: TOMAHAWK-1574

        Activity

        Hide
        Leonardo Uribe added a comment -

        I have checked it and the problem resides on how t:inputCalendar is rendered. It has this structure:

        <input id="aDate" ... />
        <span id="aDateSpan" .../>
        <script .... >...</script>
        <input type="button" ... value="..."/>

        The problem is when a render operation is requested for the calendar, the node that is replaced is only the input textbox, and the remaining three still keep attached to the DOM tree.

        The solution is just wrap everything inside a <span> tag and replace the id (but not the name) of the input textbox to something different like aDate_input. I tried other alternatives (create a facet for the button, but it will never be visited by the ajax render operation) without success, so at the end this is the most reasonable alternative, even if it requires a change on the input textbox.

        Show
        Leonardo Uribe added a comment - I have checked it and the problem resides on how t:inputCalendar is rendered. It has this structure: <input id="aDate" ... /> <span id="aDateSpan" .../> <script .... >...</script> <input type="button" ... value="..."/> The problem is when a render operation is requested for the calendar, the node that is replaced is only the input textbox, and the remaining three still keep attached to the DOM tree. The solution is just wrap everything inside a <span> tag and replace the id (but not the name) of the input textbox to something different like aDate_input. I tried other alternatives (create a facet for the button, but it will never be visited by the ajax render operation) without success, so at the end this is the most reasonable alternative, even if it requires a change on the input textbox.
        Hide
        Leonardo Uribe added a comment -

        I have tried some similar demos and they worked well with the latest snapshot. I have checked and the code has not been changed recently. I see on your code that you are using forceId="true". It is possible that use forceId is causing the problem. My suggestion is just try the example but without use forceId.

        Show
        Leonardo Uribe added a comment - I have tried some similar demos and they worked well with the latest snapshot. I have checked and the code has not been changed recently. I see on your code that you are using forceId="true". It is possible that use forceId is causing the problem. My suggestion is just try the example but without use forceId.

          People

          • Assignee:
            Leonardo Uribe
            Reporter:
            Oliver Bayer
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development