When are setValue and setSubmittedValue called on a UIComponent?

If I correctly combined the information contained in the BalusC great 2006 post report http://balusc.blogspot.ch/2006/09/debug-jsf-lifecycle.html with Optimus Prime, even an earlier post is http: //cagataycivici.wordpress. com / 2005/12/28 / jsf_component_s_value_local / I get the following:

My understanding:

  • During the APPLY_REQUEST_VALUES phase,
    • the inputValue property of the user interface component is set for the input value (for example, inputComponent. setSubmittedValue ("test")).
  • During the PROCESS_VALIDATIONS phase,
    • the same values ​​are read from the submitValue property (presumably inputComponent. getSubmittedValue ()) and, if necessary, are used for conversion.
    • If the conversion was successful or skipped, the result will be set to the value of the component property (for example, inputComponent. SetValue ("test")).
    • In addition, the submitted value is again deleted (for example, inputComponent. SetSubmittedValue (null))
    • the value (converted) is read from the value property of the UI component (presumably inputComponent. getValue () ) and checked.
    • bean/model (, myBean. getInputValue()) . , valueChangeListener.
  • UPDATE_MODEL_VALUES,
    • bean (, myBean. setInputValue ( "test" )).

:

  • ?
  • - , POST bean?
  • = "" APPLY_REQUEST_VALUES , / ?
+4
1

. . null. UIInput#validate() ( JSF 2.1 API ):

934    public void validate(FacesContext context) {
935 
936         if (context == null) {
937             throw new NullPointerException();
938         }
939 
940         // Submitted value == null means "the component was not submitted
941         // at all".  
942         Object submittedValue = getSubmittedValue();
943         if (submittedValue == null) {
944             return;
945         }
946 
947         // If non-null, an instanceof String, and we're configured to treat
948         // zero-length Strings as null:
949         //   call setSubmittedValue(null)
950         if ((considerEmptyStringNull(context)
951              && submittedValue instanceof String 
952              && ((String) submittedValue).length() == 0)) {
953             setSubmittedValue(null);
954             submittedValue = null;
955         }
956 
957         Object newValue = null;
958 
959         try {
960             newValue = getConvertedValue(context, submittedValue);
961         }
962         catch (ConverterException ce) {
963             addConversionErrorMessage(context, ce);
964             setValid(false);
965         }
966 
967         validateValue(context, newValue);
968 
969         // If our value is valid, store the new value, erase the
970         // "submitted" value, and emit a ValueChangeEvent if appropriate
971         if (isValid()) {
972             Object previous = getValue();
973             setValue(newValue);
974             setSubmittedValue(null);
975             if (compareValues(previous, newValue)) {
976                 queueEvent(new ValueChangeEvent(this, previous, newValue));
977             }
978         }
979 
980     }

immediate UIInput, , . . UIInput#processDecodes() UIInput#processValidators(), UIInput#isImmediate().

+4

All Articles