[jboss-user] [JBoss Seam] - Re: Chained select boxes

damianharvey do-not-reply at jboss.com
Fri Dec 14 10:41:44 EST 2007


It's friday, my pub lunch is settling nicely and I'm feeling verbose, so here's a very basic example (probably some syntax errors but you get the drift):

  | @Name("citySelectionBean")
  | @Scope(ScopeType.CONVERSATION) //  <---- This is important. You could also use SESSION or a stateful bean
  | public class CitySelectionBean {
  | String country;
  | String state;
  | String city;
  | 
  | public List<String> getCountries() {
  |   return entityManager.createQuery("select c from Country c").getResultList();
  | }
  | 
  | public List<String> getStates() {
  |    List<String> states = new ArrayList<String>();
  |    if(this.country != null) {
  |       return entityManager.createQuery("select s from State s where s.country = :country")
  |          .setParameter("country", this.country)
  |          .getResultList();
  |    }
  |    return states;
  | }
  | 
  | public List<String> getCities() {
  |    List<String> cities = new ArrayList<String>();
  |    if(this.state != null) {
  |       return entityManager.createQuery("select c from City c where c.state = :state")
  |          .setParameter("state", this.state)
  |          .getResultList();
  |    }
  |    return cities;
  | }
  | }
  | 
And your page:

  | <h:selectOneMenu id="country" value="#{citySelectionBean.country}">
  |    <s:selectItems value="#{citySelectionBean.countries}" var="country" label="#{country}">
  |    <a:support event="onchange" reRender="state, city"/>
  | </h:selectOneMenu>
  | 
  | <h:selectOneMenu id="state" value="#{citySelectionBean.state}">
  |    <s:selectItems value="#{citySelectionBean.states}" var="state" label="#{state}">
  |    <a:support event="onchange" reRender="city"/>
  | </h:selectOneMenu>
  | 
  | <h:selectOneMenu id="city" value="#{citySelectionBean.city}">
  |    <s:selectItems value="#{citySelectionBean.cities}" var="city" label="#{city}">
  | </h:selectOneMenu>
  | 
Also create a page.xml file and ensure that you have something like <begin-conversation> in it.

Hope this helps.

Cheers,

Damian.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4112981#4112981

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4112981



More information about the jboss-user mailing list