Hi,
where did you initialize the List dataFile?
you posted the code incompletly.
but from your exception it looks like
return dataFile.toArray();
throws a java.lang.NullPointerException.
Bye
Caroline Jen wrote:
> 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/
>
--
Don't answer to From: address!
Mail to this account are droped if not recieved via mailinglist.
To contact me direct create the mail address by
concatenating my forename to my senders domain.