preferenceformcontroller.java

来自「Java的框架」· Java 代码 · 共 172 行

JAVA
172
字号
package mcaps.core.preference.webapp.controller;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.preference.model.Preference;
import mcap.core.preference.service.PreferenceExistsException;
import mcap.core.preference.service.PreferenceManager;

import org.apache.commons.lang.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;


/**
 * Implementation of BaseFormController that interacts with the 
 * PreferenceManager to handle request to retrieve/persist preference info to 
 * data store.
 * 
 * @author Tan Beng Suang
 * @date 31-Aug-2005
 * @version 1.0.1.0
 */
public class PreferenceFormController extends BaseFormController {

	private PreferenceManager preferenceManager;

	
	/**
	 * Returns the preferenceManager.
	 * @return PreferenceManager
	 */
	public PreferenceManager getPreferenceManager () {
		return preferenceManager;
	}

	
	/**
	 * Sets the preferenceManager.
	 * @param preferenceManager The preferenceManager to set.
	 */
	public void setPreferenceManager (PreferenceManager preferenceManager) {
		this.preferenceManager = preferenceManager;
	}
	
	//----------------------------------------------------------------------
	// ----------------------------------------------------------------------

	/**
	 * First to be called.
	 */
	public ModelAndView processFormSubmission (HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		
		//	if the request is "Cancel"
		if (request.getParameter ("cancel") != null) {
			if (!StringUtils.equals (request.getParameter ("from"), "list")) {
				return new ModelAndView (getCancelView ());
			}
			else {
				return new ModelAndView (getSuccessView ());
			}
		}

		return super.processFormSubmission (request, response, command, errors);
	}

	
	/**
	 * Next to be called if processFormSubmission method called the
	 * super.processFormSubmission
	 */
	public ModelAndView onSubmit (HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		
		Preference pref = (Preference) command;
		
		Locale locale = request.getLocale ();
		
		if (request.getParameter ("delete") != null) {
			//request to delete role.
			
			this.getPreferenceManager().removePreference(pref.getId());
			saveMessage (request, getText ("preference.deleted", pref.getKey(),
										locale));

			return new ModelAndView (getSuccessView ());
		}
		else {
			
			//try saving the role information.
			try {
				this.getPreferenceManager().savePreference(pref);
			}
			catch (PreferenceExistsException e) {
				errors.rejectValue ("key", "errors.existing.preference", new Object[] {
						pref.getKey ()}, "duplicate preference");
				if (StringUtils.equals (request.getParameter ("method"), "Add"))
					pref.setVersion(null);
				return showForm (request, response, errors);
			}


			if (StringUtils.equals (request.getParameter ("method"), "Add")) {
				saveMessage (request, getText ("preference.saved", pref.getKey (),
						locale));

				// return to main Menu
				return new ModelAndView (new RedirectView ("listPreferences.action"));			}
			else {
				saveMessage (request, getText ("preference.updated", pref.getKey (), locale));
				
				return new ModelAndView (new RedirectView ("listPreferences.action"));
			}			
			
		}
	}

	
	/**
	 * calling in case of validation errors, to show the form view again.
	 * 
	 */
	protected ModelAndView showForm (HttpServletRequest request,
			HttpServletResponse response, BindException errors) throws Exception {

		// prevent ordinary users from calling a GET on editUser.html
		// unless a bind error exists.
		if ((request.getRequestURI ().indexOf ("editPreference") > -1)
				&& (!request.isUserInRole (mcap.core.user.util.NameConstants.ADMIN_ROLE)
						&& (errors.getErrorCount () == 0) && 
				(request.getRemoteUser () != null))) { 
			response.sendError (HttpServletResponse.SC_FORBIDDEN);

			return null;
		}

		return super.showForm (request, response, errors);
	}

	
	/**
	 * Retrieve a backing object for the current form from the given request.
	 */
	protected Object formBackingObject (HttpServletRequest request)
			throws Exception {
		
		String id = request.getParameter ("id");

		Preference pref = null;

		if (!StringUtils.isBlank (id)
				&& !"".equals (request.getParameter ("version"))) {
			pref = this.getPreferenceManager().getPreference (id);
		}
		else {
			pref = new Preference ();
		}

		return pref;
	}

	
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?