MyFaces Core
  1. MyFaces Core
  2. MYFACES-942

Numeric item (that is blank) is force restored initial value after validation error of the other item.

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: 1.1.1
    • Fix Version/s: None
    • Component/s: General
    • Labels:
      None

      Description

      Numeric item (that is blank) is force restored initial value after validation error of the other item.

      Testcase:
      ----------
      package foo;
      public class NumTest {
      private String data = null;
      private Integer num = new Integer(100);
      private String str = "dummy";
      public String getData()

      { return data; }

      public void setData(String data)

      { this.data = data; }

      public Integer getNum()

      { return num; }

      public void setNum(Integer num)

      { this.num = num; }

      public String getStr()

      { return str; }

      public void setStr(String str)

      { this.str = str; }

      }
      ----------
      <%@ page contentType="text/html; charset=UTF-8" %>
      <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
      <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
      <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
      <html><head><title>NumTest</title></head><body><f:view>
      <h:form>
      <h:inputText id="data" value="#

      {numTest.data}

      " required="true" />
      <h:inputText id="num" value="#

      {numTest.num}

      " />
      <h:inputText id="str" value="#

      {numTest.str}

      " />
      <t:messages showDetail="true" showSummary="true" />
      <h:commandButton action="dummy" value="Submit" />
      </h:form>
      </f:view></body></html>
      ----------

      First, display three text boxes.

      • blank - "100" - "dummy" -
        Clear all items, and click submit button.
        So, you can see validation error message for first item.
        And, you can see second item is "100" and third item is blank.

      I think that second item should be a blank.

      Maybe, it is a cause that IntegerConverter#getAsObject() return null, when value.trim().length() == 0 in "Process Validations" phase.

        Activity

        Hide
        Arnaud Valère added a comment -

        I have the same problem with version 1.1.3.

        This is annoying for users, since no one attends that an erased value could reappear! As a result a user could save wrong data without noticing it!

        Show
        Arnaud Valère added a comment - I have the same problem with version 1.1.3. This is annoying for users, since no one attends that an erased value could reappear! As a result a user could save wrong data without noticing it!
        Hide
        yamo added a comment -

        Detail:

        In UIInput#validate(), it gets two kinds of values (submittedValue and convertedValue) for each item.

        If the item is String and input value is blank, submittedValue and convertedValue are blank.
        But, if the item is Number (Integer, BigDecimal...) and input value is blank, submittedValue is blank and convertedValue is null.

        In "Render" phase, RendererUtils#getStringValue() is called by HtmlTextRendererBase#renderInput().
        And, this method deal null-value item as a non-input item.

        Show
        yamo added a comment - Detail: In UIInput#validate(), it gets two kinds of values (submittedValue and convertedValue) for each item. If the item is String and input value is blank, submittedValue and convertedValue are blank. But, if the item is Number (Integer, BigDecimal...) and input value is blank, submittedValue is blank and convertedValue is null. In "Render" phase, RendererUtils#getStringValue() is called by HtmlTextRendererBase#renderInput(). And, this method deal null-value item as a non-input item.

          People

          • Assignee:
            Unassigned
            Reporter:
            yamo
          • Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development