/* Copyright 2010 Ben Gunter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.sourceforge.stripes.exception;
import net.sourceforge.stripes.action.ActionBeanContext;
import net.sourceforge.stripes.controller.StripesConstants;
/**
* A subclass of {@link IllegalStateException} that is thrown when validation errors are present on
* a request and the source page cannot be determined.
*
* @author Ben Gunter
* @since Stripes 1.5.5
*/
public class SourcePageNotFoundException extends IllegalStateException {
private ActionBeanContext actionBeanContext;
/**
* Construct a new instance for the given action bean context.
*
* @param actionBeanContext The context.
*/
public SourcePageNotFoundException(ActionBeanContext actionBeanContext) {
// @formatter:off
super(
"Here's how it is. Someone (quite possibly the Stripes Dispatcher) needed " +
"to get the source page resolution. But no source page was supplied in the " +
"request, and unless you override ActionBeanContext.getSourcePageResolution() " +
"you're going to need that value. When you use a <stripes:form> tag a hidden " +
"field called '" + StripesConstants.URL_KEY_SOURCE_PAGE + "' is included. " +
"If you write your own forms or links that could generate validation errors, " +
"you must include a value for this parameter. This can be done by calling " +
"request.getServletPath().");
// @formatter:on
this.actionBeanContext = actionBeanContext;
}
/** Get the action bean context in which this exception occurred. */
public ActionBeanContext getActionBeanContext() {
return actionBeanContext;
}
}