Ok, I see what you are trying to do.
I believe what you want to be able to specify that a particular
f:selectItems tag gets its data from one part of your reference data and
a different f:selectItems tag gets its data from a different part of
your reference data without having to write custom methods to access the
various reference data parts.
If this is the case then f:param is definitely not what you are looking for.
JSF el expressions support properties that are of type Map. So if
#{carBean.refdata}
is an object of type Map then
#{carBean.refdata.vehicleTypes}
will call
carBean.getRefdata().get("vehicleTypes");
In other words, if you store your reference data into a real map, or
alternately write a custom class that implements the Map interface, then
you should be able to do what you want.
If this isn't sufficient for you for some reason then you *can* persuade
MyFaces to allow functions in EL expressions. However the code will be
MyFaces-specific. In short, you need to write a class that implements
javax.servlet.jsp.el.FunctionMapper, then subclass
org.apache.myfaces.el.ValueBindingImpl to register an instance of your
custom FunctionMapper. Much better to avoid that if you can.
Regards,
Simon
Lisa wrote:
We need to build a pulldowns (select list boxes) on the front end (select
lists, check boxes etc) and do not want to write a getter for each one. We
simply want a generic method that we call throughout the application called
"getList(String s).
String s is a key into a types table that, when used for the query will
return everything needed in the list.
I thought this would be the simplest approach instead of having to write a
method that sets a string and passes it to a function that builds
List<SelectItem>.
It would be better to simply have the String s in the XHTML, that calls 1
method (used throughout the app) that will build and return the
List<SelectItem> based on the string (param) in the XHTML.
at first look it seems like <f:param> would work but I can not seem to get
this to work to pass any params to my backing bean.
L
Simon Kitching-3 wrote:
I don't think you're going to be able to do this; it isn't natural JSF
style. JSF el expressions don't support parameters.
You should look at other approaches to resolve whatever your problem is.
Regards,
Simon
Lisa wrote:
I looked at the docs on this tag <f:param> but there were no examples on
how
to pass a String param to the getters in the value="#{bean.getMethod}"
I want to pass a string to getMethod(String s) listed above. If you have
any specific examples on how to do this, it would be greatly appreciated.
L
Lisa wrote:
I want to build a SelectItem list by calling a method in my backing
bean,
but I want to be able to pass the backing bean a String (from the
XHTML).
---
This is what I currently have:
<h:selectOneListbox
rendered="#{carBean.listMode}"
id="idSelectVehicleType"
value="#{carBean.vehicleType}"
size="1">
<f:selectItems id="idCarBeanTypeList"
value="#{carBean.vehicleTypeList}"/>
</h:selectOneListbox>
where vehicleTypeList is a method in CarBean.getVehicleTypeList()
---
So I want to change the method signature to accept a String like so:
CarBean.getVehicleTypeList(String s)
and in the XHTML pass String s to CarBean.getVehicleTypeList(String s).
Is this possible?
value="#{carBean.vehicleTypeList("myString")}"
thanks
Lisa