Are you sure you're getting the same session when you come back to the page? try dumping the session id.
@Inject private HttpServletRequest request; void onActivate() { final HttpSession session = request.getSession(false); log.debug(session == null ? "Null session" : ("Session Id: " + session.getId())); } Josh On Wed, May 11, 2011 at 11:17 AM, Tim Koop <t...@timkoop.com> wrote: > Thanks Josh (and Thiago). > > I added (create = false), and this certainly got rid of the error message. > > However, my session object is still either not getting set correctly (even > though I clearly visit the page where it gets set, and I even write a > message to the log saying I was there), or it isn't being retrieved > correctly, because it is null when I want to read it. > > My only thought is this: On the page where I set the session object, that > page returns a java.net.URL object, redirecting the browser to another page. > Perhaps this is preventing the session object from being stored correctly? > > And no, I don't plan to actually use a String as a SessionState Object. I'm > just testing with it. > > Thanks. > > Tim Koop > t...@timkoop.com <mailto:t...@timkoop.com> > www.timkoop.com <http://www.timkoop.com> > > On 11/05/2011 12:39 PM, Josh Canfield wrote: >> >> >> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/SessionState.html >> >> Specifically: >> >> public abstract boolean create >> If true (the default), then referencing an field marked with the >> annotation will create the SSO. If false, then accessing the field >> will not create the SSO, it will only allow access to it if it already >> exists. >> Default: >> true >> >> >> This thread might be helpful. >> >> http://tapestry.1045711.n5.nabble.com/SessionState-for-simple-types-td2839381.html >> or this one >> http://tapestry.1045711.n5.nabble.com/SessionState-error-td2432233.html >> >> >> Josh >> >> On Wed, May 11, 2011 at 10:01 AM, Tim Koop<t...@timkoop.com> wrote: >>> >>> I'm having a little problem with even a simple SessionState String >>> object. >>> >>> On one page I have this: >>> >>> @SessionState >>> private String userColour; >>> ... >>> userColour = "red"; >>> >>> >>> Then on a subsequent page I have this: >>> >>> @SessionState >>> private String userColour; >>> ... >>> System.out.println("colour is " + userColour); >>> >>> >>> But instead of printing "red", the page throws the following error. It >>> looks to me like it is trying to recreate the String object from a fancy >>> constructor. But it isn't supposed to recreate the object, is it? Isn't >>> is >>> supposed to store the object in memory just the way it is without >>> recreating >>> it with a constructor? >>> >>> >>> An unexpected application exception has occurred. >>> >>> * org.apache.tapestry5.runtime.ComponentEventException >>> Error invoking constructor java.lang.String(byte[], int, int, int) >>> (at String.java:337) (for service 'ApplicationStateManager'): No >>> service implements the interface [B. >>> >>> context >>> >>> eventType >>> activate >>> >>> * org.apache.tapestry5.ioc.internal.OperationException >>> No service implements the interface [B. >>> >>> trace >>> o Triggering event 'activate' on login/OpenId >>> o Instantiating instance of SSO class java.lang.String >>> o Determining injection value for parameter #1 (byte[]) >>> o Resolving object of type byte[] using MasterObjectProvider >>> >>> * java.lang.RuntimeException >>> No service implements the interface [B. >>> >>> Hide uninteresting stack frames Stack trace >>> o >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:665) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:45) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:56) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:41) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:806) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:50) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:233) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:60) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils$2.invoke(InternalUtils.java:273) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:277) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForConstructor(InternalUtils.java:248) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:56) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$4.invoke(ServiceResourcesImpl.java:160) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057) >>> >>> o >>> >>> org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.autobuild(ServiceResourcesImpl.java:146) >>> >>> o >>> >>> org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$1.create(ApplicationStateManagerImpl.java:104) >>> >>> o >>> >>> org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.getOrCreate(SessionApplicationStatePersistenceStrategy.java:57) >>> >>> o >>> >>> org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.get(SessionApplicationStatePersistenceStrategy.java:44) >>> >>> o >>> >>> org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$ApplicationStateAdapter.getOrCreate(ApplicationStateManagerImpl.java:50) >>> >>> o >>> >>> org.apache.tapestry5.internal.services.ApplicationStateManagerImpl.get(ApplicationStateManagerImpl.java:133) >>> >>> o >>> >>> org.apache.tapestry5.internal.transform.ApplicationStateWorker$1.get(ApplicationStateWorker.java:91) >>> >>> >>> >>> >>> -- >>> Tim Koop >>> t...@timkoop.com<mailto:t...@timkoop.com> >>> www.timkoop.com<http://www.timkoop.com> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org