Component binding setting

Hi, I am trying to understand the setting of component binding during the JSF phases. From the specification, I understand the following (JSF 1.2, Section 2.2.1) Restore View -
"For each component in the component tree, determine if a ValueExpression for “binding” is present. If so, call the setValue() method on this ValueExpression, passing the component instance on which it was found."
So, from the above, it seems that after every Restore View phase for a ViewId, setXX() for the component binding should be called. However, at runtime, I dont see this. Is my understanding correct? Excatly, when will the setXX() for the component bindings be called?
Thanks.

Hi , thanks for your response. I had done some tests, before posting my original question. Here were my observations - I had created two views View 1 and View 2. From View 1, I can navigate to View 2 and vice versa. XXX is a component binding in View 1.
Managed bean is on Pageflow Scope.
1) When View 1 is launched the first time, I see that getXXX() is called, I return null here, so, setXXX() called initializing the component. This happens in the Restore View phase of View 1.
2) Then, I navigate to View 2. Again, I see that setXXX() of View 1 is called and then View 2 is initialized. Again, this is in the Restore View phase, but that of View 2.
3) I then navigate back to View 1. I dont see any setXXX() call at this time. Why is setXXX() not called in the Restore View phase?
4) I then again navigate back to View 2. I see setXXX() again during Restore View phase of View 2.
My understanding of this is that the UIViewRoot is initialized when the View is first shown. During its initialization (createView in ViewHandler), the components are initialized and component bindings on the managed beans are set. This is done in step 1. UIViewRoot may then be stored in the session (but I dont think this is mandated by spec and probably is implementation dependent). During a subsequent postback (as in step 3), UIViewRoot is retrieved by the ViewHandler (restoreView), and setXXX() should be called here again. After this it continues on with the remaining JSF phases. RestoreView itself may retrieve UIRootView from the session, or probably build it up using the State handling mechanism - StateHolder and its cronies.
My confusion is - Why is setXXX() called during Restore View phase of View 2? At this time, it should not even bother about the UIViewRoot going out.
Thanks again for your patience explaining the finer things of ADF/JSF.
Kind regards.
Edited by: user10624779 on Oct 11, 2010 8:37 PM

Similar Messages

  • Component binding inside h:dataTable fails

    Hi,
    I'd like to create a component binding for each commandLink to a distinct child bean inside an h:dataTable like so:
    <h:dataTable value="#{parent.children}" var="child">
        <h:column>
            <h:commandLink binding="#{child.command1}" value="do it to it for #{child}" action="#{child.action}"/>
        </h:column>
    </h:dataTable>But whenever I try to render this page I get an exception stating that "child is null" and binding cannot be performed. If I remove 'binding="#{child.command1}"', however, everything works fine. I guess this is happening because 'var="child"' in h:dataTable gets evaluated after bindings are created. How can I get around that - I really need to be able to refer distinctly refer to UIComponents in each row.
    Confused...
    thanks
    -nikita

    I created a seperate class to handle the requests ActivationRequestBuilder and put the code in there .
    if you want to refer to each row in the backing bean .
    create a variable of type HtmlDataTable .
    private HtmlDataTable tenantDataTable;
    set up accessor and mutator methods for this variable.
    In your jsp in the DataTable
    <h:dataTable binding="#{activationRequestBuilder.tenantDataTable}"
    <h:commandLink title="Delete Tenant section"
    immediate="true" action="#{activationRequestBuilder.deleteTenantLocationSection}">
    public String deleteTenantLocationSection(){
    (TenantLocationRecordBean) this.getTenantDataTable().getRowData();
    This is just snippets of code but you should get the idea of what I have done here .I had multiple sections in a page so each row was a TenantLocationRecordBean .

  • h:dataTable with component binding not rendering

    Hello,
    I am developing an application with several ad-hoc queries that need to be displayed in data table elements. The number and label values of the columns are not known until runtime. I am attempting to use a component binding mechanism to intercept the UIData and add columns to it at runtime, depending on the data currently held in a backing bean instance (such as an ad-hoc query result).
    I'm not sure where I can actually intercept the table and add the columns. I've got the following code example to compile and run without error, but nothing gets rendered properly - I get an opening <table> tag in the HTML source and nothing else follows.
    I have compared the structure of the table created with the following binding method to a table created with simple <h:dataTable> tags, and I see only one difference. The datatable created with tags has a single attribute in its attribute map called "javax.faces.webapp.COMPONENT_IDS" that maps to an ArrayList of the component IDs of the h:column elements I specify on the JSF page. The datatable I attempt to create in the binding method does not have this attribute in its map, and I can't seem to manually add it in without creating further havoc. (the child count, types of children, etc all seem to be equivalent).
    From the JSF perspective this is how I've defined the h:dataTable tag instance...
    <h:dataTable id="categoryTable" rendered="true"
            binding="#{backingBeanInstance.table}"
                value="#{backingBeanInstance.rows}"
                    var="row"  border="2" />This is basically the code in the backingBeanInstance....
        private UIData table;
        public void setTable(UIData table){
            this.table = table;
           //initTable();   //tried this but seems not to work either?
        public UIData getTable(){
            if(table!=null){
                initTable(); //build the columns and add to the table
            return table
        private void initTable(int categoryIndex){
                //This block is just a way to calculate the number of columns
                int colCount = <depends on data held in bean>
                //Resolve the var string for the data table
                String item = table.getVar();
                System.out.println("item: " + item);  //this is always null the 1st time through?? why?
                UIColumn col;
                UIOutput out;
                FacesContext context = FacesContext.getCurrentInstance();
                Application app = context.getApplication();
                //For each column in the data, create a UIColumn as child of the
                //data table.  Create a UIOutput as child of the UIColumn and bind
                //the value of the UIOutput to the data with an EL expression
                for (int j = 0; j < colCount; j++) {
                    //create an instance of UIOutput to display the value for this cell
                    out = new UIOutput();
                    out.setRendererType("Text");
                    //create an instance of UIColumn
                    col = new UIColumn();
                    //construct the value binding string as an EL expression
                    String valueBindingString = "#{" + item + "[" + j + "]}";
                    //create the value binding
                    ValueBinding vb = app.createValueBinding(valueBindingString);
                    //set the value binding on the UIOutput object
                    out.setValueBinding("value", vb);
                    //add the UIOutput component to the UIColumn as a child
                    col.getChildren().add(out);
                    //add the UIColumn to the data table as a child
                    table.getChildren().add(col);
        }

    <bump>

  • Component binding table

    Hi,
    can someone give me an example of component binding with dataTable?
    In my app i must use this, because i don't know number of columns - so i must make table in my java code. Each column consists of checkbox and inputText and under the table is submit button which submits entire table. Values of checkbox and inputText in one column are bind to BackBean (this bean has selected value and price value).
    In my jsp, i use something like this:
    <h:dataTable var="table" binding="#{model.table}" value="#{model.data}" />
    I'm working on this for a week and I stil don't know how to do it.
    Thanks in advance,
    jarin

    Hi,
    yes U understand my problem. I have in my jsp only:
    <h:dataTable binding="#{model.table}"/>
    <h:commandButton action="#{model.set} value="submit"/>
    I use client state saving,
    model is managed bean ModelBean in request scope
    my two classes, which do all work - they should work if you get them into any app, I removed any unnecessary pieces of code:
    /* class ModelBean -------------------------------*/
    package backing.divadlo;
    import backing.divadlo.SedadloBack;
    import javax.faces.component.html.*;
    import java.util.*;
    import javax.faces.el.ValueBinding;
    import javax.faces.context.FacesContext;
    import javax.faces.component.*;
    public class ModelBean  {
      private UIData table;
      private ArrayList data;
      private int colNumber, rowNumber;
      public ModelBean() {
        table = new UIData();
        data = new ArrayList();
        colNumber = 0;
        rowNumber = 0;
      public void setData(ArrayList d) {
        this.data = d;
      public ArrayList getData() {
        return this.data;
      public void setTable(UIData tbl) {
        this.table = tbl;
      public UIData getTable() {
        init(); // normaly I call init() in another bean, if I select which auditorium will be shown
        return this.table;
      public void pripravData() {
        data.clear();
        // prepair of auditorium - get rows and number of cols
        rowNumber = 2;  // after all works, here will be rows of auditorium
        colNumber = 20; // seats in row, each row can have another number of seats
        // loop trough rows of auditorium
        for (int i = 0; i < rowNumber; i++) {
          ArrayList novaRada = new ArrayList();  // new row with seats
          // insert seats (SedadloBack) into new row
          for (int k = 0; k < colNumber; k++) {
            SedadloBack sedB = new SedadloBack(); // new seat
            sedB.setRada(k);      // set number of row
            sedB.setSedadlo(k);   // set number of seat
            sedB.setProdej(true); // is free or not
            sedB.setPrice(k);     // set price
            // insert seat into new row
            novaRada.add(sedB);
          // insert new row into auditorium
          data.add(novaRada);
      public void init() {
        FacesContext context = FacesContext.getCurrentInstance();
        List list = table.getChildren();
        list.clear();
        pripravData();
        if(data != null) {
          table.setValue(data);
          table.setRows(data.size());
          table.setRowIndex(0);
          table.setVar("dTable");
          UIColumn column;
          HtmlInputText priceText;
          HtmlSelectBooleanCheckbox checkbox;
          HtmlOutputText br1,br2,cislo;
          for (int i = 0; i < colNumber; i++) {
            column = new UIColumn();                    // new column
            priceText = new HtmlInputText();            // input for price
            checkbox = new HtmlSelectBooleanCheckbox(); // is free or not
            br1 = new HtmlOutputText();                 // <br>
            br2 = new HtmlOutputText();                 // <br>
            cislo = new HtmlOutputText();               // position of seat in row
            br1.setValue(new String("<br />"));
            br2.setValue(new String("<br />"));
            br2.setEscape(false);
            br1.setEscape(false);
            // prepare outText of position in row
            String cisloExp = "#{"+table.getVar()+"["+i+"].sedadlo}";
            ValueBinding vbCislo = context.getApplication().createValueBinding(cisloExp);
            cislo.setValueBinding("value",vbCislo);
            // prepare checkbox - if seat is free or not
            String expCheckbox = "#{"+table.getVar()+"["+i+"].prodej}";
            ValueBinding vbCheckbox = context.getApplication().createValueBinding(expCheckbox);
            checkbox.setValueBinding("value",vbCheckbox);
            // prepare inputText - price of seat
            priceText.setTitle("Cena");
            priceText.setStyleClass("cenaInput");
            String vbSIn = "#{"+table.getVar()+"["+i+"].price}";
            ValueBinding vbI = context.getApplication().createValueBinding(vbSIn);
            priceText.setValueBinding("value", vbI);
            // prepare column
            column.getChildren().add(cislo);
            column.getChildren().add(br1);
            column.getChildren().add(priceText);
            column.getChildren().add(br2);
            column.getChildren().add(checkbox);
            list.add(column);
      public String set() {
        // for now just print out price with position of seat
        for(int j=0; j < table.getRowCount(); j++) {
          table.setRowIndex(j);
          if(table.isRowAvailable()) {
            ArrayList data = (ArrayList)table.getRowData();
            for(int i=0; i < data.size(); i++) {
              SedadloBack sedadlo = (SedadloBack)data.get(i);
              System.out.println(sedadlo.getRada()+"/"+sedadlo.getSedadlo()
                                 +" - "+sedadlo.getPrice());
        return "null";
    /* class SedadloBack -------------------------------*/
    package backing.divadlo;
    import java.io.Serializable;
    public class SedadloBack implements Serializable {
      private int id;
      private int rada;
      private int sedadlo;
      private int price;
      private boolean prodej;
      public void setId(int id) {
        this.id = id;
      public int getId() {
        return this.id;
      public void setRada(int rada) {
        this.rada = rada;
      public int getRada() {
        return this.rada;
      public void setSedadlo(int sedadlo) {
        this.sedadlo = sedadlo;
      public int getSedadlo() {
        return this.sedadlo;
      public void setProdej(boolean pr) {
        this.prodej = pr;
      public boolean getProdej() {
        return this.prodej;
      public void setPrice(int price) {
        this.price = price;
      public int getPrice() {
        return this.price;
    } I realy appreciate your help, this is my first app in jsf - i make it as my dissertation and I am starting be little late.
    If you need more info or code i give you what you want. Preparing war is little complicated - I use postgres and hibernate and i doubt if you want install this db only to test my case.
    jarin

  • Simple component binding/JSF lifecycle question

    As a JSF newbie, I ran into an unexpected component binding state/JSF lifecycle issue. Given this JSP code:
    <h:inputText id="boundinput" binding="#{UserBean.boundInput}">and this Java setter code:
           private UIInput boundInput = new UIInput();
            public void setBoundInput(UIInput aBoundInput) {
                this.boundInput = aBoundInput;
                String value = aBoundInput.getValue();
            }the result of 'value' is the previous value of the input text field when the form is submitted. The component is bound, but why isn't the new value available?
    It seems to get the 'current' value of the bound component, a valueChangeListener has to be implemented? I may be missing something fundamental, so any help is appreciated.

    If you only want to get and set values, use valuebinding instead.
    If you're debugging the setBoundInput after form input, then yes, it is correct that the old value is still in there. This would be updated at a later JSF phase yet.
    Check http://balusc.xs4all.nl/srv/dev-jep-djl.html to get some insights in the JSF lifecycle.

  • ADFPhaseListener prepareRender and component binding problem

    I´m Using ADF Faces and using the ADFPhaseListener. My BackingBean extends from the PageController class
    and so can use prepareModel(LifecycleContext context) or prepareRender(LifecycleContext context). This works fine so far. The
    event handler methods are called as expected (in my example prepareRender). But I have one question.
    I´m using Component binding in my JSF-Page:
    <af:inputText binding="#{backing_untitled1.inputText1}" id="inputText1">
    Code snippet from my ControllerClass
    public class Untitled1 extends PageController{
    CoreInputText inputText1;
    public void setInputText1(CoreInputText inputText1) {   
    System.out.println("setInputText1");
    this.inputText1 = inputText1;
    public void prepareRender(LifecycleContext context) {
    super.prepareRender(context);
    System.out.println("inside prepareRender");
    I´ve written a second PhaseListener that just print´s out the JSF lifecycle phase numbers for better tracing.
    The first time I call my JSF-Page the following output is generated:
    07/01/03 08:32:38 Before Phase: 1 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:32:38 After Phase: 1
    07/01/03 08:32:38 inside prepareRender
    07/01/03 08:32:38 Before Phase: 6 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:32:39 setInputText1
    07/01/03 08:32:40 After Phase: 6
    I can see that the prepareRender is called before phase 6. The component binding is done in phase 6. What I would like to
    do is access the component binding in my prepareRender method. But this is not possible as it is null before phase 6.
    Is there a way to create event handling code after the component binding has taken place?
    When I do a postback (second call to the same JSF page) this thing changes
    07/01/03 08:37:23 Before Phase: 1 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 setInputText1
    07/01/03 08:37:24 After Phase: 1
    07/01/03 08:37:24 Before Phase: 2 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 After Phase: 2
    07/01/03 08:37:24 Before Phase: 3 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 After Phase: 3
    07/01/03 08:37:24 Before Phase: 4 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 After Phase: 4
    07/01/03 08:37:24 Before Phase: 5 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 After Phase: 5
    07/01/03 08:37:24 inside prepareRender
    07/01/03 08:37:24 Before Phase: 6 Source:com.sun.faces.lifecycle.LifecycleImpl@163
    07/01/03 08:37:24 After Phase: 6
    Here in my prepareRender method I could access the component binding as it has been initialized in phase 1.
    Thanks in advance
    Rainer

    hi, you can use this way to initially a value:
    public void setInputText1(CoreInputText inputText1) {
    this.inputText1 = inputText1;
    if( !AdfFacesContext.getCurrentInstance().isPostback() ){
    this.inputText1.setValue("somevalue");
    in the RenderModel phase is not possible set value to a component because this one is null, as you have said.. by this way you can do this too:
    public void setInputText1(CoreInputText inputText1) {
    this.inputText1 = inputText1;
    if( !AdfFacesContext.getCurrentInstance().isPostback() ){
    DCIteratorBinding ib = (DCIteratorBinding)Utilidades.resolveExpression("#{bindings.BanksView1Iterator}");
    RowIterator iter = ib.getRowSetIterator();
    Row row = iter.first();
    if (row != null){
    this.inputText1.setValue(row.getAttribute(BanksViewRowImpl.COD));}
    }

  • Issue with Component Binding

    Hi,
    I'm using JDeveloper version - 11.1.1.6
    I have following usecase in my product:
    1. In summary page, I have table to display list of Activities.
    2. When user Clicks an Activity, display the Activity summary (Region) below the table. The Activity summary page has Panel Tabbed component with 2 ShowDetailItem components.
    I defined a binding in pageFlowScope for PanelTabbed component in the Managed Bean.
    When I select the first activity, In the Activity summary bean, the task-flow initializer method executes first and PanelTabbed component setter method gets executed later.
    But when I select any other activity the execution is in reverse order - The setter method of PanelTabbed component executes first and task-flow initializer method executes later.
    Is this expected behavior? How can I ensure that task-flow initializer method executes first every time before executing the component bindings setter method?
    Any inputs would be helpful.
    Thanks
    Ravi

    Hi,
    component bindings must be in request scope not pageFlowScope. Please use backingBeanScope in your case
    Frank

  • JClient Component Binding Demo

    Hi,
    I've a question about the JClient Component Binding Demo.
    If I look at the JUNavbar/JUStatusBar binding demo, and the Panel Binding pane,
    I see NO way how to add a new Line Item if the Order doesn't have already one.
    I understand that the problem is because no one of the Line Item entry fields gets the focus.
    What was your intention on how to add a row in an emty table?
    Thanks

    One way folks on OTN reported they've worked around this issue is to add an combo implementing iterator picker on the NavBar. Then when they end up in this situation, the users can select the right iterator and add rows to it by binding the navbar to that iterator (which is not focus-able due to no rows in it in a table display).
    Another way I would suggest is to trap a mouse-click event on the table and if clicked upon, make the navbar focus on the iterator that the table was bound to.

  • COMPONENT binding

    Folks,
    does anybody know about detailed descriptions (with samples) of the Component binding feature in JSF? I would like to get my hands on a more detailed example than the one in the J2EE tutorial. The books I've seen so far put their focus on value and method binding but rarely anybody talks about component binding.
    Every (meaningful) response gets a DD!
    Thanks.

    http://jsftutorials.com/components/step5.html
    Probably, it is not very detailed, but with the example :-)
    You can assign the variable with the type of the component in the backing bean. This allows you to manipulate with all bunch on the component attributes.

  • If I consider heap size, should I follow component binding or Value binding

    Hi,
    I have an Web application my pages gets change rapidly in run time(components get disable and invisible at run-time depends on user input), So in that case which kind of binding approach I have to follow if I consider Heap memory of run time.

    navaneeth.j wrote:
    I am getting more grip on the component means, in ValueChange event I can get the updated value in the backing bean, That means on the updated values of the rest of the components are not available only we can get evt.getNewValue for event produced component. Example there are 5 components in the page if the event got generated from the 3rd component so in that valuechange event method needs the first two components values also. In value binding I can't get those value but in the component binding every component's updated value I can get.That's why I mentioned AJAX enabling the view in the previous post.
    I can accept for 3rd party libraries if we use value binding it would be very easy to detach and use another one but for basic components I am not able to visualize the need to use the other >API, If my guess is right, for look and feel purpose means we can change the renderkit na.
    Please suggest me am I thinking in the right direction or notRichfaces, Tomahawk and many others have lots of components that solve common problems that you are going to meet when using plain JSF components.
    Yes people try to stick to standard JSF as much as possible but it is not always possible nor always beneficial.
    Like I said it's not hard and fast. As long as you understand the advantages and disadvantages of each technique so that you can chose the correct approach according to requirements.
    The memory differences are unlikely to impact in a major way.

  • Doubt about Component binding....

    I have a doubt about component binding because I am also using component binding in my application, in my application each page has more than 20 components and each page is session scope, at one point I am getting message like perm space(this is because of lack of memory, actually I have 4gb ram). So my is
    "does the jsf creates new object for every reload, because of that my jvm filling with all the objects?".
    Another question is "what is the difference between value binding and component bindings?, and drawbacks of each other" please tell me the differences between them up to the very low level(up to memory usage for each approach).
    Please clarify this doubt...........

    JNaveen wrote:
    I have a doubt about component binding because I am also using component binding in my application, in my application each page has more than 20 components and each page is session scope, at one point I am getting message like perm space(this is because of lack of memory, actually I have 4gb ram). So my is
    "does the jsf creates new object for every reload, because of that my jvm filling with all the objects?".This is regardless of the component binding. JSF creates a component tree and stores it in the session. With component binding you can link between the backing bean and the component without the need for UIViewRoot#findComponent().
    Think your problem lies somewhere else. Use a profiler.
    Another question is "what is the difference between value binding and component bindings?, and drawbacks of each other" please tell me the differences between them up to the very low level(up to memory usage for each approach).With the component binding you can get hold of the whole component from the tree in the backing bean. Useful if you want to do a bit more than only holding the component's value, with which you usually do with the value binding.

  • Component binding property problem

    following problem:
    I have a form where I built a dataTable with a dynamic number of columns. To achieve this, I used a component binding (backing bean) to dynamically add columns.
    The form is used for different kind of queries and every query has it's own number of columns. The query-identification is submitted via a request parameter.
    All the data in the query-form are o.k. (bean values) but the backing bean will not be called in case of a new request (same jsf-form, but other request-parameter).
    example:
    http://host/url.faces?id=1
    http://host/url.faces?id=2
    <h:dataTable id="test"
                 value="#{test.values}"
                 var="i"
                 rendered="true"
                 binding="#{test.table}">
    </h:dataTable>whereas test is a bean which is created in a servlet listener and also updated with the corresponding id from the request.
    The table-property depends on the id given in the request.
    why ?

    ok, I found out, that using the <h:commandLink> with a param-tag solves this issue.
    Now the backing-bean's method to build the table is all-time called.
    And it works even after an expired session.
    But unfortunately I do not really know, why it works this way and the other it doesn't...

  • Component binding and state saving

    Hello,
    I have a few questions in regards to component binding and state saving (specifically in regards to the reference implementation) when the saving method is client and backing-beans are in the request scope rather than in the session scope:
    1) if a component instance is bound to a backing-bean property then does the state of that component get saved when the view state is saved?
    2) for UIData component, if the component value is bound to a list, does the actual list (after being wrapped) serve as the local data for the component? If this is the case, when the state is saved and then subsequently restored, does the list get re-created with the original number of items?
    Regards,
    Len Takeuchi

    Thanks for the quick response.
    (2) The actual list is not saved; the list will be
    re-queried on subsequent requests.The list composition may have changed by the time the list is re-queried. If the table being displayed is updatable then transfer of information from request back to the list (during Apply Request Values) may not happen properly. So does that pretty much mean that the original list has to be kept around (in the session)? If the state saving method is server then does the saved state maintain a reference to the original list across requests?
    Len Takeuchi

  • DataSet and Tree component binding

    Could you please tell me how you set up data binding between
    DataSet and Tree component?

    download "Dataset connection wizard" extension.
    its simple useful and visual ;)

  • Component binding return null value

    I'm migrating a JSF 1.2 application to JSF 2.1, specificly I'm currently using mojorra 2.1.24.
    The application consists of request scoped beans, and in order to pass data between requests, it embeds the data inside UI components.
    The following behaviour works well with JSF 1.2, but not with JSF 2.1.
    The application has the following configuration:
    <context-param>
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
      <param-value>client</param-value>
    </context-param>
    The page contains the following snippet:
    <h:form prependId="false">
         <h:inputHidden binding="#{bean.inputHidden}" />
         <h:panelGroup rendered="#{bean.rendered}">
          <h:commandLink value="onAction" action="#{bean.onAction}" />
         </h:panelGroup>
    </h:form>
    The bean is the following:
    @ManagedBean
    @RequestScoped
    public class Bean {
      private UIInput inputHidden;
      private AItem item;
      public setInputHidden(UIInput inputHidden){
        this.inputHidden = inputHidden;
        if(item != null){ this.inputHidden.setValue(item); }
      public AItem getItem(){
        return (AItem) getInputHidden().getValue();
      // other getter/setter
      public String onNavToPage(AItem item){ this.item = item; return "page"; }
      public String onAction(){ //... do something return ""; }
      public boolean isRendered(){ return getProcessItem() != null; }
    The steps are the following:
    to navigate to page page the method bean.onNavToPage is invoked from within another page;
    upon page rendering the bean.item is set as bean.inputHidden value;
    after the page is diplayed, the command link is pressed.
    At this point no command link is invoked, because the bean.inputHidden.getValue() returns null, and the command link is not processed.
    I noticed that the inputHidden parameter passed to the setInputHidden method during restore view phase has, inputHidden.getValue() == null, no value has been saved previously in the view.
    I would guess that something has changed in the component state management, but debugging the JSF code I didn't find what.
    Debugging JSF code I found that the component state has been masked before the state has been saved in the view, so the ComponentStateHelper.saveState saves the deltaMap and not the defaultMap, where all the state has been put.
    public Object saveState(FacesContext context) {
            if (context == null) {
                throw new NullPointerException();
            if(component.initialStateMarked()) {
                return saveMap(context, deltaMap);
            else {
                return saveMap(context, defaultMap);
    is this a bug?
    If not, how can I restore JSF 1.2 behaviuor and save the defaultMap?
    Thanks in advance for the help.

    0.10: Saved session state: 6385226710016200 "P327_OU_NAME" changedValue="test"
    0.10: ...P327_FK_ORGUNIT session state saving same value: "%null%"
    0.15: Saved session state: 6388922235040486 "P327_OU_DESC" changedValue=""
    0.15: Processing point: ON_SUBMIT_BEFORE_COMPUTATION
    0.15: Branch point: BEFORE_COMPUTATION
    0.15: Computation point: AFTER_SUBMIT
    0.15: Perform Branching for Tab Requests
    0.15: Branch point: BEFORE_VALIDATION
    0.15: Perform validations:
    0.16: Branch point: BEFORE_PROCESSING
    0.16: Processing point: AFTER_SUBMIT
    0.16: ...PLSQL (AFTER_SUBMIT) INSERT INTO INDIT_PS_ORGUNIT ( OU_ID, FK_ORGUNIT, OU_NAME, OU_DESC ) VALUES ( INDIT_PASS_SEQ_GENERIC_ID.NEXTVAL, :P327_FK_ORGUNIT, :P327_OU_NAME, :P327_OU_DESC )
    0.16: Show ERROR page...
    0.17: Processing point: AFTER_ERROR_HEADER
    0.18: Processing point: BEFORE_ERROR_FOOTER
    ORA-01722: invalid number
    the table was created with:
    CREATE TABLE INDIT_PS_ORGUNIT (
    OU_ID NUMBER(15) PRIMARY KEY,
    FK_ORGUNIT NUMBER(15) NULL,
    OU_NAME VARCHAR2(30) NOT NULL,
    OU_DESC VARCHAR2(30) NULL,
    OU_DELETED DATE NULL
    what i see is that the status is "%null%" and not really "" (NULL, nothing, ...).
    so what can i do to insert a null value from a select list?
    i gave up RTFM. because i found nothing (NULL) ?!?!

Maybe you are looking for