userreportformcontroller.java

来自「Java的框架」· Java 代码 · 共 470 行 · 第 1/2 页

JAVA
470
字号
			paramMap.put(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + "/report/getImage?image=");
			
			view.setExporterParameters(paramMap);
		}
		
		return new ModelAndView(view,model);
	}
	
	
	/* (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 request
		// unless a bind error exists.
		if ((request.getRequestURI().indexOf("userReport") > -1)
				&& (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 {

		Report report = new Report();
		String reportName = request.getParameter("reportName");
		if (reportName != null) {
			report = reportManager.getReport(reportName);
			
			String sourceFileName = this.getServletContext().getRealPath(report.getSourceFile());
			String binaryFile = sourceFileName.substring(0,sourceFileName.lastIndexOf("."));
			binaryFile += ".jasper";

			List list = JasperReportDesignUtil.instance.getReportParameters(binaryFile);
			
			//Sets the value of the parameter in case the form is redirected
			//due to validation error. This will ensure previously entered 
			//parameter value to be retained.
			for (int i = 0; i < list.size(); i++){
				ReportParameter param = (ReportParameter)list.get(i);
				param.setValue(request.getParameter("_" + param.getName()));
			}
			
			request.setAttribute(NameConstants.REPORT_PARAM_LIST, list);
		}
		String format = request.getParameter("format");
		request.setAttribute(NameConstants.REPORT_FORMAT, format);
		return report;
	}

	/**
	 * Validate the parameter value against the value type name.
	 * @param value the value of the parameter
	 * @param valueType the value class name for the parameter
	 * @return return error message if parameter is invalid; return null if parameter is valid
	 */
	private String validateParameter(String value, String valueType) {
		if (valueType.equals("java.lang.Boolean")) {
			if (value.equals("true")) {
				return null;
			} else if (value.equals("false")) {
				return null;
			} else {
				return "errors.validate.boolean";
			}
		} else if (valueType.equals("java.util.Date")) {
			SimpleDateFormat fmt = new SimpleDateFormat();
			try {
				fmt.parse(value);
			} catch (ParseException e) {
				return "errors.validate.date";
			}
			return null;
		} else if (valueType.equals("java.lang.Double")) {
			try {
				new Double(value);
			} catch (NumberFormatException e) {
				return "errors.validate.double";
			}
			return null;
		} else if (valueType.equals("java.lang.Float")) {
			try {
				new Float(value);
			} catch (NumberFormatException e) {
				return "errors.validate.float";
			}
			return null;
		} else if (valueType.equals("java.lang.Integer")) {
			try {
				new Integer(value);
			} catch (NumberFormatException e) {
				return "errors.validate.integer";
			}
			return null;
		} else if (valueType.equals("java.lang.Long")) {
			try {
				new Long(value);
			} catch (NumberFormatException e) {
				return "errors.validate.long";
			}
			return null;
		} else if (valueType.equals("java.lang.Short")) {
			try {
				new Short(value);
			} catch (NumberFormatException e) {
				return "errors.validate.short";
			}
			return null;
		} else if (valueType.equals("java.lang.Number")) {
			try {
				new Integer(value);
			} catch (NumberFormatException e) {
				return "errors.validate.number";
			}
			return null;
		}
		return null;
	}

	/**
	 * @param value
	 * @param valueClassName
	 * @return
	 */
	private Object getValue(String value, String valueClassName){
		
		if (valueClassName.equals("java.lang.Boolean")){
			Boolean rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Boolean(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.util.Date")){		
			Date rslt = null;
			if (!isNullOrEmpty(value)){
				SimpleDateFormat fmt = new SimpleDateFormat();
				try {
					rslt = fmt.parse(value);
				}
				catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Double")){
			Double rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Double(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Float")){
			Float rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Float(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Integer")){
			Integer rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Integer(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Long")){
			Long rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Long(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Short")){
			Short rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Short(value);
			}
			return rslt;
		}else if (valueClassName.equals("java.lang.Number")){
			Integer rslt = null;
			if (!isNullOrEmpty(value)){
				rslt = new Integer(value);
			}
			return rslt;
		}
		return value;
	}
	
	/**
	 * @param value
	 * @return
	 */
	private boolean isNullOrEmpty(String value){
		return ((value == null) || (value.length() < 1));
	}
	
	/**
	 * @param format
	 * @return
	 */
	private String getContentType(String format){
		if (format.equalsIgnoreCase("html")){
			return "text/html";
		}else if (format.equalsIgnoreCase("pdf")){
			return "application/pdf";
		}else if (format.equalsIgnoreCase("xls")){
			return "application/vnd-ms-excel";
		}else {
			return null;
		}
	}
	
	/**
	 * Save the error  message to be displayed to user in the session.
	 */
	private void saveError (HttpServletRequest request, String msg) {
		List errors = (List) request.getSession ().getAttribute ("errors");
		if (errors == null) {
			errors = new ArrayList ();
		}
		errors.add (msg);
		request.getSession ().setAttribute ("errors", errors);
	}

}

⌨️ 快捷键说明

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