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?
> >
> >
> > --- Bruno Aranda <[EMAIL PROTECTED]> wrote:
> >
> > > Your code is not ok. You are binding the faces
> > > components to wrong
> > > types: h:selectManyListbox cannot be bound to
> > > String[] and
> > > f:selectItems cannot be bound to an instance of
> > > UISelectMany....
> > >
> > > The best pattern here is to pass an Array/List
> of
> > > SelectItem objects
> > > to the value of your f:selectItems component,
> like
> > > this:
> > >
> > > <h:selectManyListbox
> > > value="#{fileManagementBean.dataFile}">
> > > <f:selectItem
> > > value="#{fileManagementBean.listOfSelectItems}/>
> > > </h:selectManyListbox>
> > >
> > > And also note that to have some values selected
> when
> > > the page is
> > > loaded you have to use the @value attribute.
> > >
> > > Regards,
> > >
> > > Bruno
> > >
> > > 2005/10/11, Caroline Jen <[EMAIL PROTECTED]>:
> > > > I used the UISelectItem to set its value to
> the
> > > > SelectItem (I have many SelectItme). Then, I
> > > added
> > > > each UISelectItem to the UISelectMany . When
> I
> > > > displayed a list box, I got the runtime error:
> > > >
>
=== message truncated ===
__________________________________
Yahoo! Music Unlimited
Access over 1 million songs. Try it free.
http://music.yahoo.com/unlimited/