1 2 Previous Next 16 Replies Latest reply on Feb 23, 2009 12:34 PM by nbelaevski

    WARNING: FacesMessage(s) have been enqueued

      I am updating selectOneMenu using ajax. It is updating properly but on page submit i get the following message:

      WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
      sourceId=r_mgmt_form:eq_code1[severity=(ERROR 2), summary=(r_mgmt_form:eq_code1: Validation Error: Value is not valid), detail=(r_mgmt_form:eq_code1: Validation Error: Value is not valid)]

      Any suggestions?

        • 1. Re: WARNING: FacesMessage(s) have been enqueued

          can someone help me out...???

          • 2. Re: WARNING: FacesMessage(s) have been enqueued
            nbelaevski
            • 3. Re: WARNING: FacesMessage(s) have been enqueued

              Sorry i didn't get it exactly. Can you explain a bit. It will be very kind if you give a small example

              • 4. Re: WARNING: FacesMessage(s) have been enqueued
                nbelaevski

                That means that you have broken component and model synchronization.
                Select items set should be the same when component is rendered and when its submission is processed on subsequent request (sort of security protection). Most probably, your code doesn't behave well in this point.

                • 5. Re: WARNING: FacesMessage(s) have been enqueued

                  e.g if at the time of page load the list is populated as:

                  eq_code_list = new ArrayList<SelectItem>();
                  eq_code_list.add(new SelectItem(""));
                  


                  and when an ajax call is made it is updated as:

                  eq_code_list.add(new SelectItem("MY NEW DATA 2"));
                  


                  Is it the problem???
                  THanks

                  • 6. Re: WARNING: FacesMessage(s) have been enqueued
                    nbelaevski

                    yes.

                    • 7. Re: WARNING: FacesMessage(s) have been enqueued

                      okay, so do i need to create a fresh object

                      eq_code_list = new ArrayList()

                      when ajax call is made?
                      Sorry for asking such a weird questions, as i m new to this.


                      • 8. Re: WARNING: FacesMessage(s) have been enqueued

                        .....???

                        • 9. Re: WARNING: FacesMessage(s) have been enqueued
                          nbelaevski

                          You should support such list state so that it has exactly the same items when it's rendered and when component is submitted back to server.

                          • 10. Re: WARNING: FacesMessage(s) have been enqueued

                            Thanks for the reply.
                            Still got little bit confusion. By state you mean that it should have the same items during render and submit?
                            e.g if at the time of page load

                            eq_code_list = new ArrayList<SelectItem>();
                            eq_code_list.add(new SelectItem("ABC"));
                            eq_code_list.add(new SelectItem("XYZ"));
                            


                            then at the time of submit, it should have the same.
                            eq_code_list = new ArrayList<SelectItem>();
                            eq_code_list.add(new SelectItem("ABC"));
                            eq_code_list.add(new SelectItem("XYZ"));
                            


                            if so, then how can we implement ajax as it changes the items on certain event.

                            • 11. Re: WARNING: FacesMessage(s) have been enqueued
                              nbelaevski

                               

                              <h:form>
                               <rich:messages />
                              
                               <h:selectManyCheckbox value="#{forum5Bean.valueOptions}">
                               <f:selectItems value="#{forum5Bean.initialOptions}"/>
                              
                               <a4j:support event="onclick" reRender="day" action="#{forum5Bean.apply}"/>
                               </h:selectManyCheckbox>
                              
                               <h:selectOneMenu id="day">
                               <f:selectItems value="#{forum5Bean.options}"/>
                               </h:selectOneMenu>
                              
                               <h:commandButton value="Button" />
                               </h:form>


                              private List<SelectItem> options = new ArrayList<SelectItem>();
                              
                               private List<SelectItem> initialOptions = new ArrayList<SelectItem>(Arrays.asList(new SelectItem("Monday"), new SelectItem("Tuesday"), new SelectItem("Wednesday")));
                              
                               private List<Object> valueOptions = new ArrayList<Object>();
                              
                               public List<SelectItem> getOptions() {
                               return options;
                               }
                              
                               public void setOptions(List<SelectItem> options) {
                               this.options = options;
                               }
                              
                               public List<SelectItem> getInitialOptions() {
                               return initialOptions;
                               }
                              
                               public List<Object> getValueOptions() {
                               return valueOptions;
                               }
                              
                               public void setValueOptions(List<Object> valueOptions) {
                               this.valueOptions = valueOptions;
                               }
                              
                               public void apply() {
                               this.options.clear();
                               for (Object object : valueOptions) {
                               this.options.add(new SelectItem(object));
                               }
                               }


                              • 12. Re: WARNING: FacesMessage(s) have been enqueued

                                Sir, thanks for the reply/example. I check it out and run it but got some problem in it. When i double check any check box it throws exception.

                                javax.servlet.ServletException
                                 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
                                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                 at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
                                 at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
                                 at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
                                 at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
                                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                                 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                                 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
                                 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                                 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                                 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
                                 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                                 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                                 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
                                 at java.lang.Thread.run(Thread.java:595)
                                Caused by: java.util.NoSuchElementException
                                 at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:130)
                                 at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:157)
                                 at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:61)
                                 at javax.faces.component.SelectUtils.matchValue(SelectUtils.java:82)
                                 at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:144)
                                 at javax.faces.component.UIInput.validate(UIInput.java:875)
                                 at javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
                                 at javax.faces.component.UIInput.processValidators(UIInput.java:672)
                                 at javax.faces.component.UIForm.processValidators(UIForm.java:235)
                                 at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
                                 at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
                                 at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
                                 at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
                                 at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
                                 at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
                                 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
                                 ... 18 more
                                


                                e.g if i check Monday it updates the list with Monday, but if i uncheck Monday or select and other day it throws above exception.

                                • 13. Re: WARNING: FacesMessage(s) have been enqueued

                                  i am trying to update the h:datatable using ajax call. Datatable is updating but when i click submit it throws an exception

                                  
                                  javax.faces.el.EvaluationException: java.lang.NullPointerException
                                   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
                                   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
                                   at javax.faces.component.UICommand.broadcast(UICommand.java:387)
                                   at javax.faces.component.UIData.broadcast(UIData.java:938)
                                   at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
                                   at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
                                   at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
                                   at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
                                   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
                                   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
                                   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
                                   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
                                   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                                   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                   at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
                                   at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
                                   at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
                                   at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
                                   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                                   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                                   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                                   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                                   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
                                   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                                   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                                   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
                                   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                                   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                                   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
                                   at java.lang.Thread.run(Thread.java:595)
                                  Caused by: java.lang.NullPointerException
                                   at tsheet.ApproveRegular.ApproveTsheet.showRegDetails(ApproveTsheet.java:223)
                                   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                                   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                   at java.lang.reflect.Method.invoke(Method.java:585)
                                   at org.apache.el.parser.AstValue.invoke(AstValue.java:152)
                                   at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
                                   at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
                                   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
                                   ... 29 more
                                  

                                  Is it because of the same reason that values are not same during render and submit?
                                  Please help me out to this problem. I am facing this problem at many other places. I don;t know how to keep the values same during these two phases

                                  • 14. Re: WARNING: FacesMessage(s) have been enqueued
                                    nbelaevski

                                    No, that's because of NPE:

                                    Caused by: java.lang.NullPointerException
                                    at tsheet.ApproveRegular.ApproveTsheet.showRegDetails(ApproveTsheet.java:223)

                                    P.S. You can use eventsQueue attribute to prevent concurrent AJAX requests and NoSuchElementException

                                    1 2 Previous Next