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 + -
显示快捷键?