Here is a concrete example which I've constructed separate to the rest
of my app to exclude any quirks intruduced by it's complexity:
----------------------------
public class Start
{
private final static Logger LOG = Logger.getLogger(Start.class);
@Inject
private ComponentResources resources;
@Inject
@Property
private HttpServletRequest httpRequest;
Object onSuccessFromMyForm()
{
LOG.debug(httpRequest.getSession().getId());
return new MultiZoneUpdate("myZone",
resources.getEmbeddedComponent("myZone"));
}
}
-------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">
<head>
</head>
<body>
<t:form t:id="myForm" t:zone="myZone">
<input type="submit" />
</t:form>
<t:zone t:id="myZone">
${httpRequest.session.id}
</t:zone>
</body>
</html>
------------------------------
Paul Stanton wrote:
Actually, the 2nd request (which clears the session) is not a manually
created Ajax.Request. Sorry for the confusion.
It's actually a async form submit, and to simplify the issue somewhat
every submit of this form prints a different sessionId:
<t:form t:id="someForm" t:zone="someZone">
<input t:type="TextField" t:id="someInput" />
<input type="submit" value="search" />
</t:form>
@Inject
private HttpServletRequest request;
Object onSuccessFromSomeForm()
{
LOG.debug("onSuccessFromSomeForm " +
httpRequest.getSession().getId());
return null;
}
Surely that can't be correct?
p.
Paul Stanton wrote:
Thiago,
I tried with @SessionState(create=false) and the same occurs (testing
the field for null).
I also tried (as a sanity check) to inject HttpRequest and manage the
session attribute manually. Interestingly, the session Id is changing!
This must be the cause - somehow my manual Ajax.Request to a url
derived from resources.createEventLink().toAbsoluteURI() is creating
a new session....
p.
Thiago H. de Paula Figueiredo wrote:
On Thu, 27 May 2010 23:32:38 -0300, Paul Stanton
<p...@mapshed.com.au> wrote:
Hi Thiago,
Hi!
please bare with me... I'm not imagining it. I'm guessing it's
something to do with my manually created ajax request...
Tapestry's session handling works the same regardless how the
request was made.
I'm not inspecting via debugger, I'm testing the value of the field
in code, ie:
via @Persist("session")
if (persistentField == null) LOG.debug("state reset");
I don't know if that's the case, but a persistent field from a given
page is only accessible in the same page, even when some other page
has a similar field.
and via the @SessionState
if (!persistentFieldExists) LOG.debug("state reset");
Use @SessionState(create = false) instead and test for null.
---------------------------------------------------------------------
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