ICEfaces
  1. ICEfaces
  2. ICE-2610

value of inputText/selectInputDate inside dataTable not stored

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.7DR#3
    • Fix Version/s: 1.7Beta1, 1.7
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      All browsers

      Description

      When inputText or selectInputDate is used in <ice:column> without value binding, the value of the input is not stored during form submit.

      This behaviour does not occurred when the component is contained inside <ice:columns> or not inside a dataTable at all.

        Issue Links

          Activity

          Hide
          Jacky Lee added a comment -

          These components also exhibit similar behaviour:
          selectBooleanCheckbox, selectManyListbox, selectInputText, selectManyMenu, selectOneListbox

          Show
          Jacky Lee added a comment - These components also exhibit similar behaviour: selectBooleanCheckbox, selectManyListbox, selectInputText, selectManyMenu, selectOneListbox
          Hide
          Jacky Lee added a comment -

          The following components have also been verified to have that behavior:
          selectOneMenu, inputTextarea, inputHidden, inputRichText

          Show
          Jacky Lee added a comment - The following components have also been verified to have that behavior: selectOneMenu, inputTextarea, inputHidden, inputRichText
          Hide
          Mark Collette added a comment -

          This is a result of how UIData intentionally works. You simply cannot use UIInput/EditableValueHolder components in a UIData without using a ValueBinding/ValueExpression for their value attribute.

          Basically, UIData maintains state for all of its child UIInput/EditableValueHolder components until validation succeeds. It only keeps the state if there exists a FacesMessage, which is its heuristic for Validation failing, so that user inputted values won't disappear if they were invalid. This causes unexpected failures, as value becomes null before the render phase.

          The reason why I'm counting this as Fixed, and not Invalid, is that I've changed our component metadata to better document how the value attribute works, so that hopefully people can avoid this issue. I ran into some corner cases in the component metadata, which I spun off into ICE-2687.

          Subversion 15685

          Show
          Mark Collette added a comment - This is a result of how UIData intentionally works. You simply cannot use UIInput/EditableValueHolder components in a UIData without using a ValueBinding/ValueExpression for their value attribute. Basically, UIData maintains state for all of its child UIInput/EditableValueHolder components until validation succeeds. It only keeps the state if there exists a FacesMessage, which is its heuristic for Validation failing, so that user inputted values won't disappear if they were invalid. This causes unexpected failures, as value becomes null before the render phase. The reason why I'm counting this as Fixed, and not Invalid, is that I've changed our component metadata to better document how the value attribute works, so that hopefully people can avoid this issue. I ran into some corner cases in the component metadata, which I spun off into ICE-2687 . Subversion 15685
          Hide
          Mark Collette added a comment -

          You might be able to capitalise off of ICE-2297, by nesting your UIData, so that it will maintain the state. This is why this issue doesn't pop up with ice:columns, because ice:columns and ice:dataTable are both UIData, so it's the nested UIData special case. You could also put it inside a faked out an ice:panelSeries by giving it a single entry data model.

          Show
          Mark Collette added a comment - You might be able to capitalise off of ICE-2297 , by nesting your UIData, so that it will maintain the state. This is why this issue doesn't pop up with ice:columns, because ice:columns and ice:dataTable are both UIData, so it's the nested UIData special case. You could also put it inside a faked out an ice:panelSeries by giving it a single entry data model.
          Hide
          Martin Schwietzke added a comment -

          I do not understand the previous commnt. What is ment by putting it out an ice:panelSeries: Following xhtml:

          <ice:panelSeries value="#

          {genInput.properties}

          " var="currProp"
          varStatus="currPropStatus">

          <ice:inputText rendered="#

          {currProp.textField}

          " id="xxx"
          required="#

          {currProp.required}

          " />

          </ice:panelSeries>

          What I have to do to get it run? The state of the ice:inputText is not holded.

          Show
          Martin Schwietzke added a comment - I do not understand the previous commnt. What is ment by putting it out an ice:panelSeries: Following xhtml: <ice:panelSeries value="# {genInput.properties} " var="currProp" varStatus="currPropStatus"> <ice:inputText rendered="# {currProp.textField} " id="xxx" required="# {currProp.required} " /> </ice:panelSeries> What I have to do to get it run? The state of the ice:inputText is not holded.

            People

            • Assignee:
              Unassigned
              Reporter:
              Jacky Lee
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: