Forum Stats

  • 3,840,184 Users
  • 2,262,573 Discussions
  • 7,901,162 Comments

Discussions

ADF UI Element "validator" gets executed even if unchanged as of ADF 12.2.1.4

Elio Khattar
Elio Khattar Member Posts: 11 Blue Ribbon
edited Jun 7, 2022 2:43PM in JDeveloper and ADF

We have an ADF page which contains a form and a submit button.

Inside the forms are many UI elements with some of them having a "validator" expression.

In ADF 12.1.3, in case a field is EMPTY the validator never gets executed.

In ADF 12.2.1.4, when pressing the submit , the validator of items are being launched even if they are EMPTY

Any hint about this change in behaviour?


Here is the code (inside a PanelFormLayout):

  <af:gridCell marginStart="5px" width="35%" marginEnd="0px" id="gc21"

                           halign="stretch" valign="stretch">

                      <af:inputText value="#{backingBeanScope.myBean.amountFrom}"

                             label="#{myResBundle.AMOUNT}"

                             autoSubmit="true" id="it8" simple="true"

                             binding="#{backingBeanScope.myBean.amountFromField}"

                             validator="#{backingBeanScope.myBean.amountValidator}"

                             valueChangeListener="#{backingBeanScope.myBean.onAmountFromChanged}">

                        <af:clientListener method="cbUtilities.checkAmount" type="keyPress"/>

                        <f:converter converterId="cbBigDecimalAmountConverter"/>

                      </af:inputText>

                    </af:gridCell>

....


 <af:button text="#{myResBundle.SEARCH}" id="b1"

                        actionListener="#{backingBeanScope.myBean.onSearchClicked}">

</af:button>

Tagged:

Best Answer

  • Timo Hahn
    Timo Hahn Senior Principal Technical Consultant - Oracle ACE Director Member, Moderator Posts: 38,602 Red Diamond
    Answer ✓

    There has been a change in validating empty fields in JSF 2.x. It has nothing to do with ADF it's how JSF works. Newer JSF version checks empty fields by default, older version does not. You can use some context parameters to tweak this behavior.

     <context-param>
        <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
        <param-value>true</param-value>
     </context-param>
    <context-param>
        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
        <param-value>true</param-value>
    </context-param>
    

    I'm not sure which of them works with WLS.

    You should read https://balusc.omnifaces.org/2015/10/the-empty-string-madness.html to get more info.


    Timo

    Elio Khattar

Answers

  • Timo Hahn
    Timo Hahn Senior Principal Technical Consultant - Oracle ACE Director Member, Moderator Posts: 38,602 Red Diamond
    Answer ✓

    There has been a change in validating empty fields in JSF 2.x. It has nothing to do with ADF it's how JSF works. Newer JSF version checks empty fields by default, older version does not. You can use some context parameters to tweak this behavior.

     <context-param>
        <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
        <param-value>true</param-value>
     </context-param>
    <context-param>
        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
        <param-value>true</param-value>
    </context-param>
    

    I'm not sure which of them works with WLS.

    You should read https://balusc.omnifaces.org/2015/10/the-empty-string-madness.html to get more info.


    Timo

    Elio Khattar
  • Elio Khattar
    Elio Khattar Member Posts: 11 Blue Ribbon

    Hello Timo

    Thank you for your answer. Now it is clear and i tested the VALIDATE_EMPTY_FIELDS to false and its working.

    One Confusing thing is that the property was set to TRUE but in ADF 12.1.3 (JSF 2.1) empty fields validation never gets executed. Not sure if its a bug in the implementation of JSF 2.1 which now works with JSF 2.2