At least with String keys, it works fine:

Code in your action:
private Map<String, String> myMap = new LinkedHashMap<String, String>();
..
myMap .put("key1", "Yes");// or getText(..)
myMap .put("key2", "No");
..
public Map<String, String> getMyMap() {
        return myMap;
    }


JSP:
<s:radio list="myMap" name=".." />



2009/11/4 Qunhuan Mei <q...@qm18.wanadoo.co.uk>

> Greg and Samuel,
>
> Thank you very much indeed for your quick response. Your suggestions are
> indeed working!
>
> Just out from my curiosity, would it be possible to achieve the same effect
> by the code from the action class (I have got no more clue since all my
> effort failed)?
>
> The documentation (2.1.8, radio) said "If the list is a Map (key, value),
> the Map key will become the option 'value' parameter and the Map value will
> become the option body."
>
> But when I tried my "map" list, the "key=value" were shown together rather
> than value were shown and the key were sent to the server after choice is
> made.
>
> Cheers, Q
>
> -----Original Message-----
> From: Samuel Robert [mailto:samuelrobert....@gmail.com]
> Sent: 04 November 2009 16:07
> To: Struts Users Mailing List
> Subject: Re: Radio button issue with list, map, collection, localisation
> and
> action class.
>
> This should also work:
>
> <s:text var="yes" name="yes"/>
> <s:text var="no" name="no"/>
> <s:radio key="My choice" list="#{true:#yes, false:#no}" value="true" />
>
>
> 2009/11/4 Greg Lindholm <greg.lindh...@gmail.com>
>
> > You can't nest struts tags so you can't put a <s:text>  inside of
> <s:radio>
> > tag but you should be able to call getText().
> > I would try this:
> >
> > <s:radio key="My choice" list="#{true:getText('yes'),
> false:getText('no')}"
> > value="true" />
> >
> >
> > On Wed, Nov 4, 2009 at 10:44 AM, Qunhuan Mei <q...@qm18.wanadoo.co.uk>
> > wrote:
> >
> > > Hi,
> > >
> > >
> > >
> > > For a single pair of radio buttons, e.g. "Yes" or "No" without
> > > localisation,
> > > the following jsp code seems to be straight forward and will always
> come
> > > out
> > > with true/false returned to the server (localised Yes or No can be
> > received
> > > on the server after user have made choice, but this is not the optimal
> > > solution I want. I want always true/false or 1/0):
> > >
> > >
> > >
> > > <s:radio key="My choice" list="#{true:'Yes', false:'No'}" value="true"
> />
> > >
> > >
> > >
> > >
> > >
> > > But:
> > >
> > >
> > >
> > > 1.         I wan to localise the Yes and No with still true/false to
> come
> > > out, I failed. I have tried:
> > >
> > >
> > >
> > > list="#{true:'<s:text name="yes"/>', false:'<s:text name="no"/>'}"
> > >
> > >
> > >
> > > or
> > >
> > >
> > >
> > > list="#{true:'${yes}', false:'${no}'}"
> > >
> > > list="#{true:%{#yes}, false:%{#no} }}"            etc
> > >
> > >
> > >
> > > hoping to access the following getter in the action class:
> > >
> > >
> > >
> > >            public String getYes(){
> > >
> > >                        return getText("yes");
> > >
> > >            }
> > >
> > >            public String getNo(){
> > >
> > >                        return getText("no");
> > >
> > >            }
> > >
> > >
> > >
> > > (Can a Struts tag embedded in another Struts tag?)
> > >
> > >
> > >
> > > 2.         I also failed to set the list value from action class for
> the
> > > given jsp code. This is what I have tried:
> > >
> > >
> > >
> > > Jsp code:
> > >
> > >
> > >
> > > <s:radio key="My choice" list="yesOrNoList" value="true" />
> > >
> > >
> > >
> > > a.         getter method returns a (array) list:
> > >
> > >
> > >
> > > public List<String> getYesOrNoList() {
> > >
> > >                                    String[] yesOrNoArray =
> > {getText("yes"),
> > > getText("no")};
> > >
> > >            return Arrays.asList(yesOrNoArray);
> > >
> > > }
> > >
> > >
> > >
> > > b.         getter method returns a (map) list:
> > >
> > >
> > >
> > > public List<Map> getYesOrNoList() {
> > >
> > > Map[] yesOrNoArray = {new HashMap(), new HashMap()};
> > >
> > >            yesOrNoArray[0].put(true, getText("yes"));
> > >
> > >            yesOrNoArray[1].put(false, getText("no"));
> > >
> > >   return Arrays.asList(translateYesOrNoArray);
> > >
> > > }
> > >
> > >
> > >
> > > c.         getter method returns a collection:
> > >
> > >
> > >
> > > public Collection<Map> getYesOrNoList() {
> > >
> > >            Map yesOrNoArray = new HashMap();//, new HashMap()};
> > >
> > > yesOrNoArray.put(true, getText("yes"));
> > >
> > >            yesOrNoArray.put(false, getText("no"));
> > >
> > >            return yesOrNoArray.values();
> > >
> > > }
> > >
> > >
> > >
> > >
> > >
> > > None of them produced the ideal result for me.
> > >
> > >
> > >
> > > Could any one help please? Much appreciated.
> > >
> > >
> > >
> > > Qunhuan
> > >
> > >
> >
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

Reply via email to