You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Caroline Jen <ji...@yahoo.com> on 2005/10/11 20:03:07 UTC
[Topic Changed] UISelectMany and EvaluationException
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 <ji...@yahoo.com> 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 <br...@gmail.com> 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 <ji...@yahoo.com>:
> > > 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/
Re: [Topic Changed] UISelectMany and EvaluationException
Posted by Caroline Jen <ji...@yahoo.com>.
In my JSP, the 'dataFile' will contain all the
multiple selections that users make from the list box.
I do not understand your question. Why should the
List dataFile be initialized?
--- Volker Weber <us...@weber-oldenburg.de>
wrote:
> 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 <ji...@yahoo.com> 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 <br...@gmail.com> 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) {
>
=== message truncated ===
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
Re: [Topic Changed] UISelectMany and EvaluationException
Posted by Volker Weber <us...@weber-oldenburg.de>.
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 <ji...@yahoo.com> 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 <br...@gmail.com> 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 <ji...@yahoo.com>:
>>>
>>>>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.