Hi Bill,
Many thanks for your response, I think I got bogged down the email... It was
also late for me, so couldn't put the problem succinctly, but after a few
hours sleep it became clearer... What I was trying to do was retrieve a
value from the map-backed hash map to get a default value for a drop down
list (a html:select tag use), and the property name of the dropdown to be
retrieved is taken from another bean...
In essence the jsp becomes,
<td align="left" width="25%" height="25"><font class="table">
<bean:define id="ht" property="hmOfLists" name="dao"/>
<logic:iterate id="element" name="ht">
<bean:define id="filterName" property="key" name="element"/>
<%
String props = "value(" +
pageContext.getAttribute("filterName") + ")";
%>
<html:select property="<%= props %>">
<html:optionsCollection name="element"
property="value"/>
</html:select>
</logic:iterate>
</td>
where dropdown label/values are stored in array lists that are in turn
stored in a hashmap contained in the bean "dao". The FormBean contains a
hashmap that is accessed via setValue/getValue methods. This dynamically
produces dropdowns at runtime, with default parameters defined by the
mapbacked action form.
I was trying to use jstl stuff for dynamically setting the props string and
failing... Hope it didn't make your night much later.
Rgds,
John
-----Original Message-----
From: Bill Siggelkow [mailto:[EMAIL PROTECTED]
Sent: 02 July 2004 04:49
To: [EMAIL PROTECTED]
Subject: Re: Map backed ActionForm, and jstl expression language
John, I apologize -- it' late and I am tired but I was having a little
trouble following your post ... however, if you have a map-backed form
(property) that you want to expose to JSTL you will need to expose the
Map itself in a getter.
Map getValuesMap() { return values; }
Then you can access the values by key in JSTL as
<c:out value="${myForm.valuesMap.theKey}"/> ... translates to
myForm.getValuesMap().get("theKey");
or the key can be dynamic ...
<c:set var="keyVal" value="foo"/>
<c:out value="${myForm.valuesMap[keyVal]}"/> ... translates to
myForm.getValuesMap().get("foo");
HTH ... Bill Siggelkow
John Martin wrote:
> Hi all,
>
> Any help on the following problem would be most appreciated.
>
> What i am trying to do is produce a report of data in tabular form
> with filters that will reduce the report set. There can be 100's of
> different reports but by passing in a report id to a database the
> query, filters, columns and row values can be determined.
>
> So i use a map backed action form for the filter property and there
> values, this contains the methods
>
> public void setValue(String key, Object value) {
> values.put(key, value);
> }
>
> public Object getValue(String key) {
> return values.get(key);
> }
>
> For example, i want the first filter to have a value of 1, so i
> setValue("filter1","1") and the second filter to be value 2
> (setValue("filter1","1")).
>
> Now i populate another bean with the filter labels and values, that
> gets stored in the request. These are filter lists are stored as array
lists in a hashmap with the the key, being the filter property, in this case
"filter1" and "filter2".
>
> So in the jsp i write
> <c:forEach items="${dao.hmOfLists}" var="list">
> <c:set var="props" value="${list.key}"/>
> <c:set var="values" value="${list.value}"/>
> <html-el:select property="${props}" value="">
> <html:options collection="values" property="value"
labelProperty="label"/>
> </html-el:select>
> </c:forEach>
>
> this gets me the all the filters that have been stored in the hashmap
> from the object "dao" via the property hmOfLists, with the key in the
> hashmap being the filter property. However, i want to set the defaults
> on the filters via the map backed action form, but if i write
> <html-el:select property="${props}" >, i get an error of "No getter
> method available for property filter2......etc". So i try an access
> the value, in the html-el:select using the expression
> value="${testForm.props}", but this shouldn't (and doesn't work) as
> label is actually the variable props from the hashmap, not the
> property props from the testForm. How i can i make it use the var
> props instead of the string literal, in order to determine the
> property to retrieve from the map based action form ?
>
> Thanks,
>
> John
>
>
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]