I got it. :)
All magic is behind freemaker.

dropdown.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Dropdown - Example</title>
<s:head theme="ajax"/>
</head>
<body>

<form id="selectForm">
        <s:autocompleter theme="simple" name="upperValue" list="upper"
listValue="name" listKey="valueId" notifyTopics="/refresh" />
</form>

<s:url id="lower" action="lower" namespace="/dropdown"/>
<s:autocompleter theme="ajax" name="lowerValue" href="%{#lower}"
formId="selectForm" listenTopics="/refresh" />

</body>
</html>



struts.xml

<package name="dropdown" namespace="/dropdown" extends="struts-default">
                
                <action name="upper" class="dropdown.DropdownAction" 
method="upper">
                        <result>/dropdown.jsp</result>
                </action>
                
                <action name="lower" class="dropdown.DropdownAction" 
method="lower">
                        <result type="freemarker">/options.ftl</result>
                </action>
                
        </package>


options.ftl

[
<#list lower as option>
        ["${option.name}", "${option.valueId}"],
</#list>
]

DropdownAction:

public class DropdownAction extends ActionSupport{
        
        List<Value> upper = new ArrayList<Value>();
        List<Value> lower = new ArrayList<Value>();
        
        private String upperValue;
        private String lowerValue;
        
        
        public String doUpper(){
                
                upper.add( new Value(1,"A") );
                upper.add( new Value(2,"B") );
                
                return SUCCESS;
        }
        
        public String doLower(){
                        
                lower = new ArrayList<Value>();
                
                if( upperValue.equalsIgnoreCase("A") ){
                        lower.add( new Value(1,"a1") );
                        lower.add( new Value(2,"a2") );
                }else{
                        lower.add( new Value(1,"b1") );
                        lower.add( new Value(2,"b2") );
                }
                
                return SUCCESS;
        }
        
        // geters and seters
}

Now I'd like to pass forward to my action list key value instead of list value.

Thanks,
Rodrigo Pereira

On Dec 15, 2007 2:32 PM, Martin Gainty <[EMAIL PROTECTED]> wrote:
> Rodrigo-
>
> There is a bug I logged on autocompleter..hopefully we'll have a patch soon
> https://issues.apache.org/struts/browse/WW-2373
> Since you and I are the only folks following this do you want to take a
> quick glance at this?
>
> Saludos desde EEUU
> Martin-
>
> ----- Original Message -----
> From: "Rodrigo Pereira" <[EMAIL PROTECTED]>
> To: "Struts Users Mailing List" <user@struts.apache.org>
> Sent: Saturday, December 15, 2007 10:34 AM
> Subject: Re: 2.0.11: s:autocompleter
>
>
> > Hi,
> > does anybody have an example of s:autocompleter getting list value
> > from an action?
> > I have been trying to update a list based on the selection of another
> > one, but no success. I'd like the dropdown lists not hardcoded as
> > showcase example does.
> >
> > Thanks,
> > Rodrigo Pereira
> >
> >
> > On Dec 11, 2007 4:50 PM, Rodrigo Pereira <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > > I tried that but it only loads 1st dropdown, the 2nd is never updated.
> > >
> > > <form id="selectForm">
> > >
> > >         <s:autocompleter theme="simple" name="upperValue" list="upper"
> > > listValue="name" listKey="valueId" notifyTopics="/changeLower"/>
> > >
> > > </form>
> > >
> > > <s:autocompleter theme="ajax" name="lowerValue" list="lower"
> > > listValue="name" listKey="valueId" listenTopics="/changeLower"
> > > formId="selectForm"/>
> > >
> > >
> > > Thanks,
> > > Rodrigo Pereira
> > >
> > >
> > > On Dec 11, 2007 4:42 PM, Dave Newton <[EMAIL PROTECTED]> wrote:
> > > > --- Rodrigo Pereira <[EMAIL PROTECTED]> wrote:
> > > > > this way you're hard coding the 1st dropdown list.
> > > > > I'd like to get it from an action.
> > > >
> > > > So use a value from the action instead of an immediate OGNL value.
> > > >
> > > > > By the way, how does the 2nd dropdown get updated?
> > > >
> > > > Via the notify/listen topics.
> > > >
> > > > d.
> > > >
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to