0 Replies Latest reply on Feb 26, 2008 10:01 AM by codecoaster

    dropdownmenu to backing bean save state

    codecoaster

      I have an advanced search form and have set up a dropdownmenu to take the operation to be performed on the search date. eg. On-Before-After etc.
      Here is the code which seems to work as intended and the dateOp value is being changed in the backing bean.
      here is the code for the menu:

      <h:column id="ddcol">
       <h:form id="ddform">
       <!--plan:when a date operation is selected it stores the value in dateOperation-->
       <!--The value in dOp should be rendered with value of dateOperation-->
       <!--When the search button is clicked dateOperation etc will be passed to a method in backing bean-->
       <rich:dropDownMenu id="ddmenu" submitMode="ajax" binding="#{«asInstanceVar()»CrudBacking.dateOp}" onitemselect="render='form.dOp'" immediate="true" >
       <f:facet name="label">
       <h:panelGrid id="pg" cellpadding="0" cellspacing="0" columns="2" style="vertical-align:middle">
       <h:graphicImage value="/images/icons/date_go.png" style="border: 0px"/>
       <h:outputText id="t" value="Date" />
       </h:panelGrid>
       </f:facet>
       <rich:menuItem value="On" reRender="form.dOp" icon="/images/icons/flag_blue.png" >
       <f:param id="On" name="id" value="On" />
       </rich:menuItem>
       <rich:menuItem value="Before" icon="/images/icons/resultset_previous.png" >
       <f:param id="Before" name="id" value="Before" />
      
       </rich:menuItem>
       <rich:menuItem value="After" icon="/images/icons/resultset_next.png" >
       <f:param id="After" name="id" value="After" />
      
       </rich:menuItem>
       <rich:menuItem value="Between" immediate="true" icon="/images/icons/tag.png">
       <f:param id="Between" name="id" value="Between" />
       </rich:menuItem>
      
       <rich:menuItem value="Any" >
       <f:param id="Any" name="id" value="Any" />
       </rich:menuItem>
       </rich:dropDownMenu>
      
       </h:form>
       </h:column>
       <h:column id="outCol" styleClass="header">
      
       <h:outputText id="dOp" render="true" ajaxRendered="true" name="dateOp" style="font-weight:bold" immediate="true" value="#{«asInstanceVar()»CrudBacking.dateOp}" />
       </h:column>
      

      This is the code in the backing bean:
      public void setDateOp(String s){
       FacesContext ctx = FacesContext.getCurrentInstance();
       this.dateOp = (String)ctx.getExternalContext().getRequestParameterMap().get("id");
       System.out.println("setting date op from string: "+dateOp);
       }
      

      The code to get the dateOp string from the bean is:
      public String getDateOp(){
       if(dateOp==null){dateOp="Any";}
       System.out.println("getting date op: "+dateOp);
       return dateOp;
       }
      

      I have the dateOp variable initialised as:
      public String dateOp="On";

      The problem is the value returned from the bean is always 'Any'
      Any help with this would be great as i have been stuck on this for over a week!
      Thanks in advance
      Codecoaster