Your  understanding of value binding syntax is incorrect.

Try this:

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

I can't think of any reason why this won't work.

On 5/31/07, Rønnevik, Eivind <[EMAIL PROTECTED]> wrote:




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