userpreferenceformcontroller.java
来自「Java的框架」· Java 代码 · 共 209 行
JAVA
209 行
package mcaps.core.preference.webapp.controller;
import java.text.DecimalFormat;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.preference.model.Preference;
import mcap.core.preference.model.PreferenceSet;
import mcap.core.preference.service.PreferenceManager;
import mcap.core.preference.util.NameConstants;
import mcaps.core.preference.webapp.command.UserPreferenceCommand;
import mcaps.core.preference.webapp.filter.LocaleRequestWrapper;
import org.springframework.beans.propertyeditors.CustomNumberEditor;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
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 user preference
* info to data store.
*
* Note that this need to be modified when new preference is added.
*
* @author Tan Beng Suang
* @date 01-Sep-2005
* @version 1.0.1.0
*/
public class UserPreferenceFormController 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) {
return new ModelAndView (getCancelView ());
}
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 {
UserPreferenceCommand pref = (UserPreferenceCommand) command;
Locale locale = request.getLocale ();
PreferenceSet set = preferenceManager.getPreferenceSet(request.getRemoteUser());
if (request.getParameter("reset") != null) {
// reset user preference to system default.
try {
set.removeAll ();
preferenceManager.savePreferenceSet (set);
}
catch (Exception e) {
errors.reject ("errors.userPreference.reset", "fail to reset user preference");
return showForm (request, response, errors);
}
saveMessage (request, getText ("userPreference.reset", "",
locale));
return new ModelAndView (new RedirectView ("editUserPreference.action"));
}
else {
try {
set.setValue ("pageSize", pref.getPageSize().toString());
set.setValue ("locale", pref.getLocale());
set.setValue ("theme", pref.getTheme().toString());
set.setValue ("menu", pref.getMenu().toString());
}
catch (Exception e){}
preferenceManager.savePreferenceSet(set);
HttpSession session = request.getSession();
locale = new Locale (pref.getLocale());
session.setAttribute (NameConstants.PREFERRED_LOCALE, locale);
LocaleContextHolder.setLocale (locale);
if (request instanceof LocaleRequestWrapper) {
((LocaleRequestWrapper) request).setLocale(locale);
}
saveMessage (request, getText ("userPreference.saved", "",
locale));
// return to main Menu
return new ModelAndView (new RedirectView ("mainPage.action"));
}
}
/**
* calling in case of validation errors, to show the form view again.
*
*/
protected ModelAndView showForm (HttpServletRequest request,
HttpServletResponse response, BindException errors) throws Exception {
if (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 user = request.getRemoteUser();
PreferenceSet prefSet = preferenceManager.getPreferenceSet(user);
UserPreferenceCommand command = new UserPreferenceCommand ();
Preference pref = prefSet.get("pageSize");
command.setPageSize (new Integer (pref.getValue()));
pref = prefSet.get("locale");
command.setLocale(pref.getValue());
pref = prefSet.get("theme");
command.setTheme(pref.getValue());
pref = prefSet.get("menu");
command.setMenu(pref.getValue());
return command;
}
protected void onBind (HttpServletRequest request, Object command)
throws Exception {
// if the user is being deleted, turn off validation
if (request.getParameter ("reset") != null) {
super.setValidateOnBinding (false);
}
else {
super.setValidateOnBinding (true);
}
}
protected void initBinder (HttpServletRequest request,
ServletRequestDataBinder binder) {
super.initBinder(request, binder);
DecimalFormat df = new DecimalFormat ("#########");
binder.registerCustomEditor (Integer.class, null, new CustomNumberEditor (
Integer.class, df, true));
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?