I use both of those. I've started playing with wicket because Gavin recommends JSF or wicket (both have component models). wicket doesn't appear to have active component libs like richfaces, primefaces, icefaces.
I'm surprised that richfaces adores mojarra. The lists http://java.net/projects/javaserverfaces/lists have low activity. Issues http://java.net/jira/browse/JAVASERVERFACES/ seem to get resolved. I can only dream of a framework: * Reliable on gae. * Several component lib developers conforming to an open look&feel std like nimbus. * Client-side validation first to avoid server load & bandwidth for silly mistakes like not filling in a required field. On Thu, Dec 9, 2010 at 12:21 PM, Werner Punz <[email protected]> wrote: > Ok here is a hint which could indicate to the root of your problems, > apparently GAE has session handling disabled you have to enable it. > > > <sessions-enabled>true</sessions-enabled > > in the appeninge-web.xml file to enable it. > > > Also some links indicate you should only use state saving client. > > > > Werner > > > Am 09.12.10 20:42, schrieb Werner Punz: > >> Ok this could be an indication to the viewstate issue you are facing >> >> http://java.dzone.com/news/jsf2-configuration-google-app >> >> seems like GAE has its fair share of problems or the underlying >> container of GAE that is. >> >> All I can say, if it is just for learning purposes try to program your >> program locally and when it comes to deployment find a hoster which >> allows you to use your own app stack. As for the ajax stuff, I will give >> GAE a try as I said, but I assume your problem is related to the other >> session scope problems GAE seems to have. >> >> >> Werner >> >> >> Am 09.12.10 20:38, schrieb Werner Punz: >> >>> Ok I cannot really help with the viewExpired Problem except for that it >>> indicates a problem on GAEs side. >>> >>> But I ran your Ajax problem quickly through and for me it works locally >>> here. So I assume you run into a GAE related issue here as well. >>> >>> I will do a GAE testsetup as my scarce time permits to run this through, >>> but I really assume a gae related problem or a deployment related >>> problem here. >>> It would be interesting to know if in the ajax case the browser throws >>> any errors. What does the browser error console say? >>> >>> >>> Werner >>> >>> Am 24.10.10 20:14, schrieb ken keller: >>> >>>> Yesterday evening I noticed java.io.InvalidObjectException stopped being >>>> thrown. I don't know why but I hope it is related to switching from >>>> eclipse >>>> to intellij& not due to gae. (I also learned facelets is built into >>>> jsf2 so >>>> a separate jar isn't required.) >>>> >>>> I have two new problems which only happen on live gae--not dev gae: >>>> >>>> 1) I'm testing jsf-basics.zip on >>>> http://www.coreservlets.com/JSF-Tutorial/jsf2/code/. >>>> * open bank-lookup.jsf >>>> * fill in form >>>> * click [Show Current Balance] >>>> * the correct jsf page is displayed >>>> * click chrome's Back >>>> * javax.faces.application.ViewExpiredException is thrown (whether using >>>> client or server state saving): >>>> >>>> org.apache.myfaces.shared_impl.util.StateUtils reconstruct: View State >>>> cannot be reconstructed >>>> javax.faces.FacesException: >>>> javax.faces.application.ViewExpiredException >>>> at >>>> org.apache.myfaces.shared_impl.util.StateUtils.decrypt(StateUtils.java: >>>> 490) >>>> at >>>> >>>> org.apache.myfaces.shared_impl.util.StateUtils.reconstruct(StateUtils.java: >>>> >>>> >>>> 378) >>>> at >>>> >>>> org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getSavedState(Ht >>>> >>>> >>>> mlResponseStateManager.java: >>>> 213) >>>> at >>>> >>>> org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getState(HtmlRes >>>> >>>> >>>> ponseStateManager.java: >>>> 160) >>>> at >>>> >>>> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.res >>>> >>>> >>>> toreView >>>> >>>> (DefaultFaceletsStateManagementStrategy.java: >>>> 140) >>>> at >>>> >>>> org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreView(JspState >>>> >>>> >>>> ManagerImpl.java: >>>> 388) >>>> at >>>> >>>> org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView >>>> >>>> >>>> (ViewDeclarationLanguageBase.java: >>>> 106) >>>> at >>>> >>>> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView >>>> >>>> >>>> (FaceletViewDeclarationLanguage.java: >>>> 1277) >>>> .... >>>> >>>> This doesn't happen if I submit the form with errors, fix them,& click >>>> [Show Current Balance] button: >>>> * open bank-lookup.jsf >>>> * click [Show Current Balance] button >>>> * validation errors are shown (post back) >>>> * correct errors >>>> * click [Show Current Balance] button >>>> * click Back button >>>> >>>> 2) A simple use of<f:ajax> doesn't update: >>>> >>>> <h:selectOneMenu id="menu" value="#{bankingBean.customerId}"> >>>> <f:ajax event="change" execute="@this" render="register"/> >>>> <f:selectItems value="#{bankingBean.customerIds}"/> >>>> </h:selectOneMenu> >>>> <h:outputText id="register" value="#{bankingBean.customerId}"/> >>>> >>>> >>>> On Thu, Oct 21, 2010 at 9:32 PM, ken keller<[email protected]> wrote: >>>> >>>> I'm a JSF2/myfaces rookie. I have it working w/ Eclipse Helios& gae >>>>> Eclipse plugin. When I deploy it& visit my test page, a blank page is >>>>> displayed& the log entry is appended to this message. It appears to >>>>> be a >>>>> session deserialization problem. Thx. for your help. >>>>> >>>>> >>>>> javax.servlet.ServletException: java.lang.RuntimeException: >>>>> java.io.InvalidObjectException: enum constant attributes does not >>>>> exist in class javax.faces.component.UIComponent$PropertyKeys >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:240) >>>>> >>>>> >>>>> at >>>>> >>>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) >>>>> >>>>> at org.mortbay.jetty.Server.handle(Server.java:326) >>>>> at >>>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) >>>>> at >>>>> >>>>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) >>>>> >>>>> >>>>> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:261) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8486) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8484) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24) >>>>> >>>>> >>>>> at >>>>> com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:418) >>>>> at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:572) >>>>> at >>>>> >>>>> com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448) >>>>> >>>>> >>>>> at com.google.tracing.TraceContext.runInContext(TraceContext.java:688) >>>>> at >>>>> >>>>> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446) >>>>> >>>>> >>>>> at >>>>> >>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >>>>> >>>>> >>>>> at >>>>> >>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >>>>> >>>>> >>>>> at java.lang.Thread.run(Thread.java:636) >>>>> Caused by: java.lang.RuntimeException: >>>>> java.io.InvalidObjectException: enum constant attributes does not >>>>> exist in class javax.faces.component.UIComponent$PropertyKeys >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java:413) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.SessionManager.createSessionFromEntity(SessionManager.java:376) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java:314) >>>>> >>>>> >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.SessionManager.getSession(SessionManager.java:284) >>>>> >>>>> >>>>> at >>>>> >>>>> org.mortbay.jetty.servlet.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:237) >>>>> >>>>> >>>>> at >>>>> >>>>> org.mortbay.jetty.servlet.SessionHandler.setRequestedId(SessionHandler.java:246) >>>>> >>>>> >>>>> at >>>>> >>>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:136) >>>>> >>>>> at >>>>> >>>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) >>>>> >>>>> at >>>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:238) >>>>> >>>>> >>>>> ... 21 more >>>>> Caused by: java.io.InvalidObjectException: enum constant attributes >>>>> does not exist in class javax.faces.component.UIComponent$PropertyKeys >>>>> at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1721) >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1343) >>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) >>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) >>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) >>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) >>>>> at java.util.HashMap.readObject(HashMap.java:1047) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>> >>>>> >>>>> at >>>>> >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> >>>>> >>>>> at java.lang.reflect.Method.invoke(Method.java:616) >>>>> at >>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991) >>>>> at >>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865) >>>>> at >>>>> >>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) >>>>> >>>>> >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) >>>>> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) >>>>> at >>>>> java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1928) >>>>> at >>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1890) >>>>> at >>>>> >>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) >>>>> >>>>> >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) >>>>> at >>>>> java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1928) >>>>> at >>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1890) >>>>> at >>>>> >>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) >>>>> >>>>> >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) >>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) >>>>> at java.util.HashMap.readObject(HashMap.java:1047) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>> >>>>> >>>>> at >>>>> >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> >>>>> >>>>> at java.lang.reflect.Method.invoke(Method.java:616) >>>>> at >>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991) >>>>> at >>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865) >>>>> at >>>>> >>>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) >>>>> >>>>> >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) >>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) >>>>> at >>>>> >>>>> com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java:411) >>>>> >>>>> >>>>> ... 30 more >>>>> Caused by: java.lang.IllegalArgumentException: No enum const class >>>>> javax.faces.component.UIComponent$PropertyKeys.attributes >>>>> at java.lang.Enum.valueOf(Enum.java:214) >>>>> at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1719) >>>>> ... 69 more >>>>> >>>>> >>>>> >>>> >>> >>> >>> >> >> >> > >

