RE: Specified expiration page not being shown

2012-05-31 Thread Dale Ogilvie
After more investigation it seems that wicket 1.4.20 is not always
displaying the expired page if session expires on a form and the form
button link resolves to a url mounted using QueryStringUrlCodingStrategy

mount(new QueryStringUrlCodingStrategy(test,HomePage.class));

the relevant bit of code in WebRequestCycleProcessor is below,
requestCodingStrategy will return a target if path is not null, even if
session is dead.

// NOTE we are doing the mount check as the last item, so that it will
// only be executed when everything else fails. This enables URLs like
// /foo/bar/?wicket:bookmarkablePage=my.Page to be resolved, where
// is either a valid mount or a non-valid mount. I (Eelco) am not
// absolutely sure this is a great way to go, but it seems to have been
// established as the default way of doing things. If we ever want to
// tighten the algorithm up, it should be combined by going back to
// unmounted paths so that requests with Wicket parameters like
// 'bookmarkablePage' are always created and resolved in the same
// fashion. There is a test for this in UrlMountingTest.
if (target == null)
{
  // still null? check for a mount
  target = requestCodingStrategy.targetForRequest(requestParameters);

  if (target == null  requestParameters.getComponentPath() != null)
  {
// If the target is still null and there was a component path
// then the Page could not be located in the session
throw new PageExpiredException(
  Cannot find the rendered page in session [pagemap= +
requestParameters.getPageMapName() + ,componentPath= +
requestParameters.getComponentPath() + ,versionNumber= +
requestParameters.getVersionNumber() + ]);
  }
}

  -Original Message-
  From: Dale Ogilvie [mailto:dale_ogil...@trimble.com]
  Sent: Wednesday, 30 May 2012 9:52 a.m.
  To: users@wicket.apache.org
  Subject: Specified expiration page not being shown
 
  Hi,
 
  This is for wicket 1.4.20.
 
  In our WebApplication subclass we have used:
 
 
getApplicationSettings().setPageExpiredErrorPage(MyExpiredPage.class);
 
  However after session has expired on one of our pages, if I submit
the
 (fairly
  complex) form, the form error message is shown. By this I mean that
 page
  component validation fires and validation of an object from session
 (now
  defunct) fails and the page is redrawn with an error message in the
 feedback
  panel. The expired page IS displayed if an ajax backed combo is used
 on the
  same form, only form submission avoids the expiry page.
 
  Why might it be that our MyExpiredPage is not being shown in the
form
  submission case? We want our expired page to be displayed
 consistently.
 
  Thanks for any suggestions as to where to look for the issue.
 
  Dale
 
 
 
 
-
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



RE: Specified expiration page not being shown

2012-05-29 Thread Dale Ogilvie
I have narrowed the behaviour that prevents our MyExpiredPage appearing
to this code below, specifically the StringEqualsValidator.

captchaToken = new
RequiredTextFieldString(captchaToken, 
new PropertyModelString(this,
captchaEntered))
{
@Override
protected final void onComponentTag(final
ComponentTag tag)
{

super.onComponentTag(tag);
// clear the field after each render
if ( captchaToken.hasErrorMessage() ) {
tag.put(value, );
}
}
};
 captchaToken.add(new StringEqualsValidator(
captcha.getAnswer() ));


public class StringEqualsValidator implements IValidatorString {
 
private final String toCompare;

public StringEqualsValidator(String str) {
toCompare = str;
}
 
@Override
public void validate(IValidatableString validatable) {
final String input = validatable.getValue();

if (StringUtils.equals(input, toCompare) == false) {
error(validatable, notequal);
}
}
 
private void error(IValidatableString validatable, String
errorKey) {
ValidationError error = new ValidationError();
error.addMessageKey(getClass().getSimpleName() + . +
errorKey);
validatable.error(error);
}
 
}

 -Original Message-
 From: Dale Ogilvie [mailto:dale_ogil...@trimble.com]
 Sent: Wednesday, 30 May 2012 9:52 a.m.
 To: users@wicket.apache.org
 Subject: Specified expiration page not being shown
 
 Hi,
 
 This is for wicket 1.4.20.
 
 In our WebApplication subclass we have used:
 
 getApplicationSettings().setPageExpiredErrorPage(MyExpiredPage.class);
 
 However after session has expired on one of our pages, if I submit the
(fairly
 complex) form, the form error message is shown. By this I mean that
page
 component validation fires and validation of an object from session
(now
 defunct) fails and the page is redrawn with an error message in the
feedback
 panel. The expired page IS displayed if an ajax backed combo is used
on the
 same form, only form submission avoids the expiry page.
 
 Why might it be that our MyExpiredPage is not being shown in the form
 submission case? We want our expired page to be displayed
consistently.
 
 Thanks for any suggestions as to where to look for the issue.
 
 Dale
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org