I have gotten rid of the "Argument Type Mismatch"
problem.  

I found that if I use UISelectMany, user selections
from a list box will be in an Object[].

But, I got another runtime error:
"EvaluationException: Error getting property
'dataFile' from bean of type
actions.FileManagementBean:
java.lang.NullPointerException'

Maybe people could help me better now.  I have the
getter and setter for the property 'dataFile' in my
backing bean.  Let me repeat my code.  In my JSP, I
create a list box:
[code]
<h:selectManyListbox
binding="#{fileManagementBean.dataFile}" size="7" >
    <f:selectItems
value="#{fileManagementBean.dataFileItems}"/>
</h:selectManyListbox>
[/code]
And this is my backing bean:
[code]
public class FileManagementBean 
{
        private UISelectMany dataFileItems;
        protected List dataFile;
        
        public FileManagementBean() 
        {
                dataFileItems = new UISelectMany();
                UISelectItem item = new UISelectItem();

                SelectItem file = new SelectItem( "file1", "Data
File No. 1");
                item.setValue( file );
                dataFileItems.getChildren().add( item );
                file = new SelectItem( "file2", "Data File No. 2");
                item.setValue( file );
                dataFileItems.getChildren().add( item );
......
......
        }
        
        public Object[] getDataFile() 
        {
                return dataFile.toArray();
        }
        
        public void setDataFile( Object[] newDataFile ) 
        {
            int len = 0;
                if ( null == newDataFile ||
                   ( len = newDataFile.length) == 0) 
                {
                    return;
                }
                dataFile.clear();
                dataFile = new ArrayList( len );
                for ( int i = 0; i < len; i++ ) 
                {
                    dataFile.add( newDataFile[i] );
                }       
        }
        
        public UISelectMany getDataFileItems() 
        {
                return dataFileItems;
        }
}
[/code]



--- Caroline Jen <[EMAIL PROTECTED]> wrote:

> Hi, I had known how to create selectManyListbox. 
> Two
> weeks before I posted my question, I had
> successfully
> used a List of SelectItem to create a list box.  I
> do
> not want to have pre-selected items when the web
> page
> is loaded into the browser.
> 
> My problem occurred when I changed the dataFileItems
> from List to UISelectMany, I started getting
> "argument
> type mismatch".  
> 
> <h:selectManyListbox
> binding="#{fileManagementBean.dataFile}" size="7" >
>     <f:selectItems
> value="#{fileManagementBean.dataFileItems}"/>
> </h:selectManyListbox>
> 
> I am working on how to resolve my current problem.
> 
> Besides, someone advised that "dataFile" should be
> of
> type SelectItem[].  Therefore, I changed the type of
> the "dataFile" from String[] to SelectItem[].  I
> still
> have argument type mismatch problem.
> 
> --- Bruno Aranda <[EMAIL PROTECTED]> wrote:
> 
> > Mmmh, if I understood you ok at the beginning we
> > have two objectives:
> > 
> > #1 - Have a list filled dinamically with
> SelectItem
> > objects
> > #2 - Some of the elements of the list are
> > pre-selected when the page loads.
> > 
> > To do #1 we need to use the f:selectItems
> components
> > with a value that
> > points to an array/List of SelectItem objects in
> the
> > backing bean.
> > Something like this:
> > 
> > [jsp]
> > 
> > <h:selectManyListBox>
> >   <f:selectItems
> > value="#{fileManagementBean.listOfSelectItems}"/>
> > </h:selectManyListBox>
> > 
> > [/jsp]
> > 
> > Notice that I have used the value attribute of the
> > selectItems
> > component, instead of the binding... The backing
> > bean code should be,
> > in this case:
> > 
> > [code]
> > 
> > public class FileManagementBean
> > {
> >        private List listOfSelectItems
> > 
> >        public FileManagementBean()
> >        {
> >                listOfSelectItems = new
> ArrayList();
> >                SelectItem file = new SelectItem(
> > "file1", "Data
> > File No. 1");
> >                listOfSelectItems.add( file );
> > 
> >                SelectItem file2 = new SelectItem(
> > "file2", "Data File No. 2");
> >                listOfSelectItems.add( file2 );
> > .....
> > .....
> >        }
> > 
> >        public List getListOfSelectItems() {
> >                return dataFileItems;
> >        }
> > 
> >      public void setListOfSelectItems(List
> > listOfSelectItems) {
> >                this.listOfSelectItems =
> > listOfSelectItems;
> >        }
> > }
> > 
> > [/code]
> > 
> > After doing this, we should have in our page a
> list
> > with two items,
> > none of them pre-selected.
> > So, to do #2, we just need to pass an array of the
> > values for the
> > items we want to be chosen to the
> selectManyListBox,
> > like this:
> > 
> > [jsp]
> > 
> > <h:selectManyListBox
> > value="#{fileManagementBean.preSelection}">
> >   <f:selectItems
> > value="#{fileManagementBean.listOfSelectItems}"/>
> > </h:selectManyListBox>
> > 
> > [/jsp]
> > 
> > [code]
> > 
> > public class FileManagementBean
> > {
> > 
> > public class FileManagementBean
> > {
> >        private List listOfSelectItems
> >        private String[] preSelection;
> > 
> >        public FileManagementBean()
> >        {
> >                listOfSelectItems = new
> ArrayList();
> >                SelectItem file = new SelectItem(
> > "file1", "Data
> > File No. 1");
> >                listOfSelectItems.add( file );
> > 
> >                SelectItem file2 = new SelectItem(
> > "file2", "Data File No. 2");
> >                listOfSelectItems.add( file2 );
> > 
> >                // pre-selection
> >               preSelection = new String[]
> {"file2"};
> > // file2 is pre-selected
> > .....
> > .....
> >        }
> > 
> >        public String[] getPreSelection() {
> >                return dataFileItems;
> >        }
> > 
> >      public void setPreSelection(String[]
> > preSelection) {
> >                this.preSelection = preSelection;
> >        }
> > 
> > ....
> > }
> > 
> > }
> > 
> > [/code]
> > 
> > Hope that helps.... :-)
> > 
> > Bruno
> > 
> > 
> > 2005/10/11, Caroline Jen <[EMAIL PROTECTED]>:
> > > Sorry, I am completely confused.
> > >
> > > OKay, here is my JSP:
> > >
> > > [code]
> > >          <h:selectManyListbox
> > >  binding="#{fileManagementBean.dataFile}"
> size="7"
> > >
> > >              <f:selectItems
> > >  value="#{fileManagementBean.dataFileItems}"/>
> > >          </h:selectManyListbox>
> > > [/code]
> > >
> > > In my backing bean, I have changed String[]
> > dataFile
> > > to SelectItem[] dataFile.
> > >
> > > <f:selectItems> cannot bind to UISelectMany? 
> The
> > > dataFileItems is of UISelectMany type in my
> > backing
> > > bean.  What should I do?
> > >
> > > In your code provided:
> > > <f:selectItems
> > > value="#{fileManagementBean.listOfSelectItems}/>
> > >
> > > How do I do it?
> 
=== message truncated ===



                
__________________________________ 
Yahoo! Music Unlimited 
Access over 1 million songs. Try it free.
http://music.yahoo.com/unlimited/

Reply via email to