Version 7

    main.xhtml:

     

     

     

     

    mypackage.java:

     

    package beans;

     

     

     

    import javax.el.ValueExpression;

     

    import javax.faces.component.html.HtmlInputText;

     

    import javax.faces.component.html.HtmlOutputText;

     

    import javax.faces.component.UIComponent;

     

    import javax.faces.event.ActionEvent;

     

    import javax.faces.event.ValueChangeEvent;

     

     

     

    public class mypackage {

     

     

     

        // Init -


     

     

     

        private HtmlInputText inField1;

     

        private HtmlInputText inField2;   

     

        private String instrField1;

     

        private String instrfield2;   

     

        private String inputValue;

     

        private HtmlOutputText newField1Binding;

     

        private HtmlOutputText newField2Binding;   

     

        private HtmlOutputText oldField1Binding;

     

        private HtmlOutputText oldField2Binding;

     

        private String new_outstrField1;

     

        private String old_outstrField1;   

     

        private String new_outstrfield2;

     

        private String old_outstrField2;   

     

         

     

        // Actions -


     

     

     

        public void action() {

     

    //        outputValue = inputValue;

     

            log("success");

     

            log("input value = " + (String)inField1.getValue());

     

            log("input value = " + (String)inField2.getValue());

     

            newField1Binding.setValue(inField1.getValue());

     

            newField2Binding.setValue(inField2.getValue());

     

    //        outputBinding.setValue(inputBinding.getValue());

     

        }

     

         

     

        public void action(ActionEvent event) {

     

            log("success - ae");   

     

             action();

     

        }

     

     

     

        // Getters -


     

     

     

        public String getInputValue() {

     

            log(inputValue);

     

            return inputValue;

     

        }

     

     

     

        public void setInputValue(String inputValue) {

     

            log(inputValue);

     

            this.inputValue = inputValue;

     

        }

     

     

     

        public void inputChanged(ValueChangeEvent event) {

     

            log(event.getOldValue() + " to " + event.getNewValue());

     

            String id = ((UIComponent)event.getSource()).getId();

     

            log("found" + id);

     

            if (id.equals("field1")) {

     

                 oldField1Binding.setValue(event.getOldValue());

     

            } else if (id.equals("field2")) {

     

                 oldField2Binding.setValue(event.getOldValue());

     

            }

     

        }

     

     

     

        // Helpers -


     

     

     

        private void log(Object object) {

     

            String methodName = new Exception().getStackTrace(){FOOTNOTE DEF 1 1}.getMethodName();

     

            System.out.println("MyBean " + methodName + ": " + object);

     

        }

     

     

     

         public HtmlInputText getInField1() {

     

              log(inField1);

     

              return inField1;

     

         }

     

     

     

         public void setInField1(HtmlInputText inField1) {

     

              log(inField1);

     

              this.inField1 = inField1;

     

         }

     

     

     

         public HtmlInputText getInField2() {

     

              log(inField2);

     

              return inField2;

     

         }

     

     

     

         public void setInField2(HtmlInputText inField2) {

     

              log(inField2);

     

              this.inField2 = inField2;

     

         }

     

     

     

         public String getInstrField1() {

     

              log(instrField1);

     

              return instrField1;

     

         }

     

     

     

         public void setInstrField1(String instrField1) {

     

              log(instrField1);

     

              this.instrField1 = instrField1;

     

         }

     

     

     

         public String getInstrfield2() {

     

              log(instrfield2);

     

              return instrfield2;

     

         }

     

     

     

         public void setInstrfield2(String instrfield2) {

     

              log(instrfield2);

     

              this.instrfield2 = instrfield2;

     

         }

     

     

     

         public HtmlOutputText getNewField1Binding() {

     

              return newField1Binding;

     

         }

     

     

     

         public void setNewField1Binding(HtmlOutputText newField1Binding) {

     

              this.newField1Binding = newField1Binding;

     

         }

     

     

     

         public HtmlOutputText getNewField2Binding() {

     

              return newField2Binding;

     

         }

     

     

     

         public void setNewField2Binding(HtmlOutputText newField2Binding) {

     

              this.newField2Binding = newField2Binding;

     

         }

     

     

     

         public HtmlOutputText getOldField1Binding() {

     

              return oldField1Binding;

     

         }

     

     

     

         public void setOldField1Binding(HtmlOutputText oldField1Binding) {

     

              this.oldField1Binding = oldField1Binding;

     

         }

     

     

     

         public HtmlOutputText getOldField2Binding() {

     

              return oldField2Binding;

     

         }

     

     

     

         public void setOldField2Binding(HtmlOutputText oldField2Binding) {

     

              this.oldField2Binding = oldField2Binding;

     

         }

     

     

     

         public String getNew_outstrField1() {

     

              return new_outstrField1;

     

         }

     

     

     

         public void setNew_outstrField1(String new_outstrField1) {

     

              this.new_outstrField1 = new_outstrField1;

     

         }

     

     

     

         public String getOld_outstrField1() {

     

              return old_outstrField1;

     

         }

     

     

     

         public void setOld_outstrField1(String old_outstrField1) {

     

              this.old_outstrField1 = old_outstrField1;

     

         }

     

     

     

         public String getNew_outstrfield2() {

     

              return new_outstrfield2;

     

         }

     

     

     

         public void setNew_outstrfield2(String new_outstrfield2) {

     

              this.new_outstrfield2 = new_outstrfield2;

     

         }

     

     

     

         public String getOld_outstrField2() {

     

              return old_outstrField2;

     

         }

     

     

     

         public void setOld_outstrField2(String old_outstrField2) {

     

              this.old_outstrField2 = old_outstrField2;

     

         }

     

    }

     

     

    MyConverter.java:

     

    package util;

     

     

     

    import javax.faces.component.UIComponent;

     

    import javax.faces.context.FacesContext;

     

    import javax.faces.convert.Converter;

     

     

     

    public class MyConverter implements Converter {

     

        public Object getAsObject(FacesContext context, UIComponent component, String value) {

     

            System.out.println("MyConverter getAsObject: " + value);

     

            return value;

     

        }

     

     

     

        public String getAsString(FacesContext context, UIComponent component, Object value) {

     

            System.out.println("MyConverter getAsString: " + value);

     

            return (String) value;

     

        }

     

    }

     

     

    MyValidator.java:

     

    package util;

     

     

     

    import javax.faces.component.UIComponent;

     

    import javax.faces.context.FacesContext;

     

    import javax.faces.validator.Validator;

     

    import javax.faces.validator.ValidatorException;

     

     

     

    public class MyValidator implements Validator {

     

        public void validate(FacesContext context, UIComponent component, Object value)

     

        throws ValidatorException

     

         {

     

             System.out.println("MyValidator validate: " + value);

     

         }

     

    }

     

     

    faces-config.xml:

     

     

     

     

     

    Using Exadel Phase Tracker we are able to generate this log output:

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker beforePhase

     

    INFO: BEFORE RESTORE_VIEW 1

     

    MyBean setInField1: javax.faces.component.html.HtmlInputText@1c19919

     

    MyBean setInField2: javax.faces.component.html.HtmlInputText@12a416a

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker afterPhase

     

    INFO: AFTER RESTORE_VIEW 1

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker beforePhase

     

    INFO: BEFORE APPLY_REQUEST_VALUES 2

     

    MyConverter getAsObject: one123

     

    MyValidator validate: one123

     

    MyConverter getAsObject: two234

     

    MyValidator validate: two234

     

    MyBean inputChanged: one12 to one123

     

    MyBean inputChanged: foundfield1

     

    MyBean inputChanged: two23 to two234

     

    MyBean inputChanged: foundfield2

     

    MyBean action: success - ae

     

    MyBean action: success

     

    MyBean action: input value = one123

     

    MyBean action: input value = two234

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker afterPhase

     

    INFO: AFTER APPLY_REQUEST_VALUES 2

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker beforePhase

     

    INFO: BEFORE RENDER_RESPONSE 6

     

    Mar 10, 2008 6:49:15 PM org.exadel.jsf.PhaseTracker afterPhase

     

    INFO: AFTER RENDER_RESPONSE 6