All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.struts.chain.commands.AbstractValidateActionForm Maven / Gradle / Ivy

/*
 * $Id: AbstractValidateActionForm.java 481833 2006-12-03 17:32:52Z niallp $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.apache.struts.chain.commands;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.InvalidCancelException;
import org.apache.struts.chain.contexts.ActionContext;
import org.apache.struts.config.ActionConfig;

/**
 * 

Validate the properties of the form bean for this request. If there are * any validation errors, execute the specified command; otherwise, proceed * normally.

* * @version $Rev: 481833 $ $Date: 2005-06-04 10:58:46 -0400 (Sat, 04 Jun 2005) * $ */ public abstract class AbstractValidateActionForm extends ActionCommandBase { // ------------------------------------------------------ Instance Variables /** *

Provide Commons Logging instance for this class.

*/ private static final Log LOG = LogFactory.getLog(AbstractSelectForward.class); // ------------------------------------------------------ Protected Methods /** *

Helper method to verify the Cancel state.

* *

If the state is invalid, Cancel is unset and an * InvalidCancelException is thrown.

* * @param actionCtx Our ActionContext * @param actionConfig Our ActionConfig * @return true if cancel is set, false otherwise. * @throws InvalidCancelException */ private boolean isCancelled(ActionContext actionCtx, ActionConfig actionConfig) throws InvalidCancelException { Boolean cancel = actionCtx.getCancelled(); boolean cancelled = ((cancel != null) && cancel.booleanValue()); boolean cancellable = actionConfig.getCancellable(); boolean invalidState = (cancelled && !cancellable); if (invalidState) { actionCtx.setCancelled(Boolean.FALSE); actionCtx.setFormValid(Boolean.FALSE); throw new InvalidCancelException(); } return cancelled; } // ---------------------------------------------------------- Public Methods /** *

Validate the properties of the form bean for this request. If there * are any validation errors, execute the child commands in our chain; * otherwise, proceed normally.

* * @param actionCtx The Context for the current request * @return false so that processing continues, if there are * no validation errors; otherwise true * @throws Exception if thrown by the Action class */ public boolean execute(ActionContext actionCtx) throws Exception { // Set form valid until found otherwise actionCtx.setFormValid(Boolean.TRUE); // Is there a form bean for this request? ActionForm actionForm = actionCtx.getActionForm(); if (actionForm == null) { return false; } // Is validation disabled on this request? ActionConfig actionConfig = actionCtx.getActionConfig(); if (!actionConfig.getValidate()) { return false; } // Was this request cancelled? if (isCancelled(actionCtx, actionConfig)) { if (LOG.isDebugEnabled()) { LOG.debug(" Cancelled transaction, skipping validation"); } return false; } // Call the validate() method of this form bean ActionErrors errors = validate(actionCtx, actionConfig, actionForm); // If there were no errors, proceed normally if ((errors == null) || (errors.isEmpty())) { return false; } // Flag the validation failure and proceed /* NOTE: Is there any concern that there might have already * been errors, or that other errors might be coming? */ actionCtx.saveErrors(errors); actionCtx.setFormValid(Boolean.FALSE); return false; } // ------------------------------------------------------- Protected Methods /** *

Call the validate() method of the specified form bean, * and return the resulting ActionErrors object.

* * @param context The context for this request * @param actionConfig The ActionConfig for this request * @param actionForm The form bean for this request * @return ActionErrors object, if any */ protected abstract ActionErrors validate(ActionContext context, ActionConfig actionConfig, ActionForm actionForm); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy