Faisal,

   I'm out of this problem, up to this I can help you, sorry
my myfaces knowledge is not enough for it.

   I also noticed the "submitFormViaAJAX" method, hope nothing
to do with that.

Sorry, hope you find out what is going on
tonio.

On Mon, 2006-06-05 at 14:07 -0700, Faisal Mahmoud wrote:
> Tonio,
> 
> Sorry, here is the form that contains the JSF code:
> 
> <h:form id="chooseControlDeviceForm" style="margin: 0px; padding: 0px; width:
> auto; background-color: #CCCC77;" onsubmit="submitFormViaAJAX(event, this,
> 'step2FillResultArea');">
>       STEP 1:  Add a new Control Device by choosing a type from the drop-down
> list:<br />
>       <h:selectOneMenu id="selectFromExistingTenants"
> value="#{SelectNewControlDeviceTypePage.chosenDevice}">
>               <f:selectItems
> value="#{SelectNewControlDeviceTypePage.licensedDevices}"/>
>       </h:selectOneMenu>&nbsp;&nbsp;
>       
>       <h:commandButton id="fillButton" immediate="true" type="submit"
> action="#{SelectNewControlDeviceTypePage.chooseDevice}" value="Choose"/>
>       <h:messages showDetail="table"  layout="table"/>
> </h:form>
> 
> So the method is being called via the commandButton.
> 
> -Faisal 
> 
> -----Original Message-----
> From: Tonio Caputo [mailto:[EMAIL PROTECTED] 
> Sent: Monday, June 05, 2006 2:00 PM
> To: MyFaces Discussion
> Subject: RE: Problem with selectOneMenuItem
> 
> Faisal,
> 
>    When are you calling chooseDevice() method ?
> 
>    I mean, during the processing of which JSF event are you calling
> chooseDevice().
> 
> Regards
> 
>    
> On Mon, 2006-06-05 at 13:40 -0700, Faisal Mahmoud wrote:
> > Hi Tonio,
> > 
> > My backing bean is in the session, and the way I populate the List is 
> > via in the getter method for the property. The full class code is 
> > below. Note I use the Spring framework, so alot of my dependencies are 
> > wired using Spring. For the life of me, I cannot figure out why the 
> > selection does not get bound to the property. Also, beneath the java 
> > code is my faces-config.xml entry for this class.
> > public class SelectNewControlDeviceTypePage {
> >     /**
> >      * Default no-args constructor
> >      */
> >     public SelectNewControlDeviceTypePage() {}
> >     
> >     // BUSINESS LOGIC
> >     public String chooseDevice()
> >     {
> >             logger.info("Received a request from the JSF View to forward to
> the 
> > view associated with the chosen licensed controller.");
> >             if (this.getChosenDevice() == null)
> >             {
> >                     logger.debug("#####################chosenDevice is
> null");
> >             }
> >             
> >             if (this.getChosenDevice().equals(this.ILON100))
> >             {
> >                     logger.info("Forwarding to view associated with Licensed
> > Controller: " + this.ILON100);
> >                     return this.CHOOSEILON100;
> >             }
> >             else if (this.getChosenDevice().equals(this.CARRIERDDE))
> >             {
> >                     logger.info("Forwarding to view associated with Licensed
> > Controller: " + this.CARRIERDDE);
> >                     return this.CHOOSECARRIERDDE;
> >             }
> >             else if (this.getChosenDevice().equals(this.HONEYWELL))
> >             {
> >                     logger.info("Forwarding to view associated with Licensed
> > Controller: " + this.HONEYWELL);
> >                     return this.CHOOSEHONEYWELL;
> >             }
> >             else
> >             {
> >                     logger.info("Forwarding to error view, unknown Licensed
> Controller 
> > chosen: " + this.getChosenDevice());
> >                     return this.ERROR;
> >             }
> >     }
> >     
> >     // PROPERTY: controlDeviceEditDelegate
> >     public ControlDeviceEditDelegate getControlDeviceEditDelegate() { 
> > return this.controlDeviceEditDelegate; }
> >     public void setControlDeviceEditDelegate(ControlDeviceEditDelegate
> > controlDeviceDelegate) { this.controlDeviceEditDelegate =
> controlDeviceDelegate;
> > }           
> >     
> > 
> >     // PROPERTY: chosenDevice
> >     public String getChosenDevice() { return this.chosenDevice; }
> >     public void setChosenDevice(String chosenDevice) { this.chosenDevice 
> > = chosenDevice; }
> > 
> >     // PROPERTY: licensedDevices
> >     public List getLicensedDevices() 
> >     {
> >             if (this.licensedDevices == null)
> >             {
> >                     logger.debug("List of licensedDevices is NULL,
> retrieving via 
> > delegate.");
> >                     try
> >                     {
> >                             this.licensedDevices =
> > this.controlDeviceEditDelegate.getLicensedControllerList();
> >                     }
> >                     catch (BaseViewException e)
> >                     {
> >                             logger.error(e);
> >                             this.licensedDevices = new LinkedList();
> >                     }
> >                     catch (Exception e)
> >                     {
> >                             logger.error(e);
> >                             this.licensedDevices = new LinkedList();
> >                     }
> >                     catch (Throwable e)
> >                     {
> >                             logger.error(e);
> >                             this.licensedDevices = new LinkedList();
> >                     }
> >                     logger.debug("Received a List of licensedDevice
> SelectItem objects 
> > from delegate, list size = " + this.licensedDevices.size());
> >             }
> >             return this.licensedDevices; 
> >     }
> >     public void setLicensedDevices(List licensedDevices) { 
> > this.licensedDevices = licensedDevices; }
> >     
> >     // Navigation strings
> >     private final String ERROR = "error";
> >     private final String CHOOSEILON100 = "chooseILON100";
> >     private final String CHOOSEHONEYWELL = "chooseHoneywell";
> >     private final String CHOOSECARRIERDDE = "chooseCarrierDDE";
> >     
> >     // Device description strings
> >     private final String ILON100 = "Echelon iLON100";
> >     private final String HONEYWELL = "Honeywell";
> >     private final String CARRIERDDE = "Carrier DDE";
> >     
> >     // Associations
> >     private ControlDeviceEditDelegate controlDeviceEditDelegate;
> >     
> >     // View Properties
> >     private List licensedDevices;
> >     private String chosenDevice = "";
> >     
> >     // Private constant member variables
> >     private final Log logger = LogFactory.getLog(this.getClass());
> > }
> > 
> >     <managed-bean>
> >     
> > <managed-bean-name>SelectNewControlDeviceTypePage</managed-bean-name>
> >     
> > <managed-bean-class>com.dv.ocs.jsf.bean.view.page.SelectNewControlDevi
> > ceTypePage
> > </managed-bean-class>
> >             <managed-bean-scope>session</managed-bean-scope>
> >             <managed-property>
> >                     <property-name>controlDeviceEditDelegate</property-name>
> >                     <value>#{controlDeviceEditDelegate}</value>
> >             </managed-property>
> >     </managed-bean>
> > 
> > -faisal
> >  
> > 
> > -----Original Message-----
> > From: Tonio Caputo [mailto:[EMAIL PROTECTED]
> > Sent: Monday, June 05, 2006 12:18 PM
> > To: MyFaces Discussion
> > Subject: Re: Problem with selectOneMenuItem
> > 
> > Hi Faisal,
> > 
> >    I had the same problem, it was because my Backing Bean has request 
> > scope, and my list was not initialized in the constructor method.
> > 
> >    The problem was, that as the Backing Bean did not have the list 
> > initialized the "value" of the component was not set.
> > 
> >    An easy way to detect this problem is to be sure that your JSP page 
> > has somewhere the tag h:messages.
> > 
> >     <h:messages showDetail="table"  layout="table"/>
> > 
> > Hope this helps
> > tonio
> >      
> >    
> > On Mon, 2006-06-05 at 11:48 -0700, Faisal Mahmoud wrote:
> > > Hi All,
> > >  
> > > I am building a drop down list using the <h:selectOneMenu> tag and 
> > > all the items in the List populate and show up correctly in the drop 
> > > down list. But after the user selects an item in the list and 
> > > submits the form, when I check the property that is specified in the 
> > > tag's value attribute, I get a NullPointerException. My code is below:
> > >  
> > >  
> > > jsp page:
> > > <h:selectOneMenu id="selectFromExistingTenants" immediate="true"
> > > value="#{SelectNewControlDeviceTypePage.chosenDevice}">
> > >     <f:selectItems
> > > value="#{SelectNewControlDeviceTypePage.licensedDevices}"/>
> > > </h:selectOneMenu>
> > >  
> > > Code that builds the java.util.List of javax.faces.model.SelectItem 
> > > objects in the <f:selectItems> value attribute:
> > > List list = this.licensedControllerDAO.getAllLicensedControllers();
> > > logger.debug("Retrieved List of LicensedController objects. List 
> > > size = " + list.size()); Iterator iter = list.iterator(); while
> > > (iter.hasNext()) {
> > >     LicensedController licensedController = (LicensedController) 
> > > iter.next();
> > >     String controllerLabel = licensedController.getLabel();
> > >     SelectItem selectItem = new SelectItem(controllerLabel, 
> > > controllerLabel);
> > >     licensedDevices.add(selectItem);
> > >     logger.debug("Added a SelectItem to the List with 
> > > controllerLabel = " + controllerLabel); }
> > >  
> > >  
> > > Backing Bean code for the <h:selectOneMenu> tag's value attribute:
> > > //SelectNewControlDeviceTypePage.java
> > >  private String chosenDevice;
> > > // PROPERTY: chosenDevice
> > >  public String getChosenDevice() { return this.chosenDevice; }  
> > > public void setChosenDevice(String chosenDevice) { this.chosenDevice 
> > > = chosenDevice; }
> > >  
> > >  
> > > So what am I doing wrong in my code such that my backing bean 
> > > property is not getting with the chosen item?
> > >  
> > > Faisal Mahmoud
> > > www.quidprocode.com
> > >  
> > 
> 

Reply via email to