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:
>
> "IllegalArgumentException: argument type mismatch"
>
> In my JSP, I create a list box for multiple
> selections:
>
> [code]
>         <h:selectManyListbox
> binding="#{fileManagementBean.dataFile}" size="7" >
>             <f:selectItems
> value="#{fileManagementBean.dataFileItems}"/>
>         </h:selectManyListbox>
> [/code]
>
> Therefore, the "dataFileItems" is of type UISelectMany
> that has elements of type UISelectItem.  The multiple
> selections that users make will be in a String array:
> String[] dataFile.  Did I mess up anything here?  My
> backing bean code is like:
>
> [code]
> .....
> .....
> public class FileManagementBean
> {
>         private String[] dataFile;
>         private UISelectMany dataFileItems;
>
>         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 String[] getDataFile() {
>                 return dataFile;
>         }
>
>         public void setDataFile( String[] dataFile ) {
>                 this.dataFile = dataFile;
>         }
>
>         public UISelectMany getDataFileItems() {
>                 return dataFileItems;
>         }
> }
> [/code]
>
>
>
>
> __________________________________
> Yahoo! Mail - PC Magazine Editors' Choice 2005
> http://mail.yahoo.com
>

Reply via email to