folderformcontroller.java
来自「Java的框架」· Java 代码 · 共 169 行
JAVA
169 行
package mcaps.core.docman.webapp.controller;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import mcaps.core.docman.util.DocManUtil;
import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.docman.model.FolderObject;
import mcap.core.docman.service.DocAccessException;
import mcap.core.docman.service.DocExistsException;
import mcap.core.docman.service.DocManManager;
import mcap.core.docman.service.DocPathNotFoundException;
/**
* This class extends BaseFormController that will interacts with the
* DocManManager to handle request to retrieve/persist folder info
* to data store.
*
* @author Chan Chin Wei
* @date Apr 12, 2006
* @version 1.0.1.0
*/
public class FolderFormController extends BaseFormController {
private DocManManager docManager;
public DocManManager getDocManager() {
return docManager;
}
public void setDocManager(DocManManager docManager) {
this.docManager = docManager;
}
//===========================================================================================================
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractFormController#processFormSubmission(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
* Checks for an action that should be executed without respect to binding errors, like a cancel action.
*/
public ModelAndView processFormSubmission (HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
if (request.getParameter ("cancel") != null) {
String parentId = ((FolderObject) command).getFolderPath();
if (parentId != null && !parentId.equals(""))
parentId = DocManUtil.urlEncodePath (parentId);
else
parentId = DocManUtil.urlEncodePath (((FolderObject) command).getParentId());
return new ModelAndView (new RedirectView ("docMan.action?path=" + parentId));
}
return super.processFormSubmission (request, response, command, errors);
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
* Next to be called if processFormSubmission method called the
* super.processFormSubmission
*/
public ModelAndView onSubmit (HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
Locale locale = request.getLocale();
FolderObject folder = (FolderObject) command;
if (request.getParameter ("delete") != null) {
try {
docManager.removeFolder(folder.getFolderPath());
saveMessage (request, getText ("folderObject.deleted", folder.getName(), locale));
return new ModelAndView (new RedirectView ("docMan.action?path=" + DocManUtil.urlEncodePath (folder.getParentId())));
} catch (DocAccessException e) {
e.printStackTrace();
if (e instanceof DocPathNotFoundException)
errors.reject("errors.folderObject.deleteNotFound", new Object[] {folder.getName ()}, "Unable to delete");
else
errors.reject ("errors.folderObject.deleteFail", new Object[] {folder.getName ()}, "Unable to delete");
return showForm (request, response, errors);
}
}
else {
try {
folder.setCreationDate(Calendar.getInstance());
folder.setModificationDate(Calendar.getInstance());
String username = request.getRemoteUser();
folder.setCreator(username);
folder.setModifier(username);
String path = docManager.saveFolder(folder);
saveMessage (request, getText ("folderObject.saved", folder.getName(), locale));
return new ModelAndView (new RedirectView ("docMan.action?path=" + DocManUtil.urlEncodePath (path)));
} catch (DocAccessException e) {
e.printStackTrace();
// if (e.getCause() instanceof DataIntegrityViolationException)
if (e instanceof DocExistsException)
errors.reject("errors.folderObject.saveFailExist", new Object[] {folder.getName ()}, "Unable to save");
else
errors.reject("errors.folderObject.saveFail", new Object[] {folder.getName ()}, "Unable to save");
return showForm (request, response, errors);
}
}
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractFormController#showForm(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.validation.BindException)
* 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 folderForm.html
// unless a bind error exists.
if ((request.getRequestURI ().indexOf ("folderForm") > -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);
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractFormController#formBackingObject(javax.servlet.http.HttpServletRequest)
* Retrieve a backing object for the current form from the given request.
*/
protected Object formBackingObject (HttpServletRequest request)
throws Exception {
FolderObject folder = null;
String path = request.getParameter("path");
if (StringUtils.equals (request.getParameter ("method"), "add")) {
folder = new FolderObject();
folder.setParentId(path);
}else{
folder = docManager.getFolder(path, false);
}
return folder;
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.BaseCommandController#initBinder(javax.servlet.http.HttpServletRequest, org.springframework.web.bind.ServletRequestDataBinder)
* Set up a custom property editor for converting form inputs to real objects
*/
protected void initBinder (HttpServletRequest request,
ServletRequestDataBinder binder) {
// super.initBinder(request,binder);
SimpleDateFormat dateFormat = new SimpleDateFormat (getText ("date.format",
request.getLocale ()));
dateFormat.setLenient (false);
binder.registerCustomEditor (Date.class, null, new CustomDateEditor (
dateFormat, true));
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?