I also encounter a problem like this :i request the page,shou correct,when i
submit the page,rase an error.

jsf page:

<h:selectManyListbox id="teams" value="#{UserForm.userTeamIds}" >
<f:selectItems value="#{UserForm.userTeamMap}"/>
</h:selectManyListbox>


backing bean :

public class UserForm {
        private UserService userService;

        private User user;
        

.......

        public List<String> getUserTeamIds(){
                log.debug("getUserTeamIds go here..");
                List<String> li=new java.util.ArrayList<String>();
                if(user!=null){
                        Set<Team> teams=user.getTeams();
                        for (Iterator<Team> 
itr=teams.iterator();itr.hasNext();){
                                Team r=itr.next();
                                li.add(r.getTeamId().toString());
                        }
                }
                return li;
        }


        /**
         * for select many
         * @return
         */
        public Map<String,String> getUserTeamMap(){
                log.debug("getUserTeamMap here :");
                java.util.Map<String,String> m=new 
java.util.LinkedHashMap<String,
String>();
                if(user!=null){
                        Set<Team> teams=user.getTeams();
                        for (Iterator<Team> 
itr=teams.iterator();itr.hasNext();){
                                Team t=itr.next();
                                m.put(t.getTeamName(),t.getTeamId().toString());
                        }
                }
                return m;
        }

............
}


run in en error :
-------------------------------------------------
javax.servlet.ServletException
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)

org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

root cause 

java.util.NoSuchElementException

javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:117)

javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:164)
        
javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
        javax.faces.component.UISelectMany.matchValue(UISelectMany.java:485)
        javax.faces.component.UISelectMany.validateValue(UISelectMany.java:454)
        javax.faces.component.UIInput.validate(UIInput.java:867)
        javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
        javax.faces.component.UIInput.processValidators(UIInput.java:666)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)
        javax.faces.component.UIForm.processValidators(UIForm.java:229)

javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)
        javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)

com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
        com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)

org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

-------------------------------------------------

i debug in it  ,when i post the page,the page invoke the
UserForm.getUserTeamMap() method,but return
a empety map,then the server validate the selectmany's available value and
selectedItems,then mismath.and throw a exception......is this reson????  who
can tell me .







Damien GUERIN wrote:
> 
> Hi everyone,
> 
> i've a problem with the UISaveState component... I've a JSF page which
> contains a form with many inputs.
> 
> <h:form id="myForm">
>       <t:saveState id="save" value="#{mainBean}" />
>       <h:selectOneMenu id="sessionLabel"
>               value="#{mainBean.param1}"
>               immediate="true" onchange="submit()"
>               valueChangeListener="#{mainBean.param1SelectionChangedHandler}">
>               <f:selectItems value="#{mainBean.param1List}" />
>       </h:selectOneMenu>
>       <h:inputText id="param1" value="#{mainBean.param2}" />
>         <h:commandButton action="#{mainBean.doValidate}"
>               value="OK" />
> </h:form>
> 
> mainBean is a bean which contains :
> - param1 attribute ;
> - param2 attribute ;
> - secondBean : bean to fill param2 in function of param1 selection.
> 
> So, my problem :
> when the param1 value changes, the param2 don't change even if the param2
> value seems to be calculated and assigned correctly in the mainBean (the
> display don't work, saveState, restoreState problem??).
> If the secondBean is declared transient, when the param1 value changes,
> the param2 value changes too and it's ok but in this case, there is a
> problem in the form submission. The value of param2 is always the
> calculated value in param1SelectionChangedHandler even if user change the
> value directly in the form (the setter of param2 doen't seem to be
> used)...
> 
> Thanks a lot.
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Tomahawk-and-SaveState-tf4193716.html#a11946698
Sent from the MyFaces - Users mailing list archive at Nabble.com.

Reply via email to