Hi!

 

I was just curious, is there any way I can change the value of a dataTable 
based on different conditions?

 

I'll try to give a simple example to explain what I want. :)

 

Let's say I use the graphicImage tag, in the value property I could either 
write the path to the image

<t:graphicImage value="/images/myImage.gif"

Or I can use an expression that returns a String pointing to the image

<t:graphicImage value#{myBean.pathToImage}"

 

I have the need of using the same jsp twice, but based on a boolean property 
the datasource for the dataTable on this page would differ.

 

Theoretically, this way of setting the value-property would represent what I 
would want to do:

 

<t:dataTable value="#{myBean.boolean ? '#{oneBean.dataModel}' : '#{ 
anotherBean.dataModel}'}"

 

This would work if the value property expected a String, but instead it expects 
an expression that directly points to a collection of some sort.

 

I also tried to point to a method in my bean that returns the correct 
value-string based on the Boolean:

 

<t:dataTable value="#{myBean.tableValue

 

where the getTableValue-method is like this:

 

public String getTableValue()

{

            if(condition)

                  return "#{oneBean.dataModel}";

            return "#{anotherBean.dataModel}";

            

}

 

But of course this fails since the dataTable expects a collection and not a 
String.

 

 

 

I know that I in my getTableValue-method can return the proper collection:

 

public DataModel getTableValue()

{

            if(condition)

                  return getOneBean().getDataModel();

            return getAnotherBean().getDataModel();

            

}

 

but then I would have to set the references to these other beans, and I can't 
do that because it would cause a cyclic reference.. 

 

So, are there other solutions to this or do I have to rethink my way of doing 
this? :)

 

Regards,

 

Eivind

Reply via email to