/** * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.frameworkset.web.tag; import java.io.IOException; import java.util.List; import java.util.Locale; import javax.servlet.jsp.JspException; import org.frameworkset.spi.support.MessageSource; import org.frameworkset.spi.support.validate.Errors; import org.frameworkset.spi.support.validate.FieldError; import org.frameworkset.spi.support.validate.ObjectError; /** * <p> * Title: ErrorTag.java * </p> * <p> * Description: 绑定参数异常信息标签 * </p> * <p> * bboss workgroup * </p> * <p> * Copyright (c) 2008-2010 * </p> * * @Date 2011-1-9 * @author biaoping.yin * @version 1.0 */ public class ErrorTag extends HtmlEscapingAwareTag { private String colName; private String arguments; private String text; private String argumentSeparator = TagHelper.DEFAULT_ARGUMENT_SEPARATOR; /** * @return the colName */ public String getColName() { return colName; } /** * @param colName the colName to set */ public void setColName(String colName) { this.colName = colName; } // /* // * (non-Javadoc) // * // * @see org.frameworkset.web.tag.RequestContextAwareTaartTagInternal() // */ // @Override // protected int doStartTagInternal() throws JspException, IOException { // // ErrorsTag parent = (ErrorsTag)findAncestorWithClass(this, ErrorsTag.class); // if(parent != null) // { // ObjectError error = parent.getCurrent_error(); // // handlerError( error); // // } // else // { // Errors errors = (Errors) this.getRequestContext().getErrors("default"); // boolean flag = false; // String code = null; // FieldError error_ = null; // Object arguments = null; // if (errors != null) { // List errors_ = errors.getFieldErrors(colName); // for (int i = 0; errors_ != null && i < errors_.size(); i++) { // error_ = (FieldError) errors_.get(i); //// handlerError( error_); // // if(colName.equals(error_.getField())) // { // code = error_.getCode(); // if(error_.getArguments() == null || error_.getArguments().length == 0) // { // arguments = new Object[]{error_.getField(),error_.getRejectedValue(),error_.getType()}; // } // else // { // arguments = error_.getArguments(); // } // // this.setMessage(error_.getDefaultMessage()+":use default message."); // // flag = true; // break; // } // // // } // } // // String msg = null; // if(flag) // { // // msg = this.resolveMessage(); // msg = resolveMessage(pageContext,this.getMessageSource(), // this.getRequestContext().getLocale(),code,arguments,argumentSeparator); // if(msg != null ) // { // if( msg.equals(error_.getCode())) // { // if(error_.getDefaultMessage() != null) // msg = error_.getDefaultMessage(); // // } // // } // // // // } // if(msg != null && !msg.equals("")) // { // // HTML and/or JavaScript escape, if demanded. // msg = isHtmlEscape() ? HtmlUtils.htmlEscape(msg) : msg; // msg = this.isJavaScriptEscape() ? JavaScriptUtils.javaScriptEscape(msg) : msg; // this.writeMessage(msg); // // } // } // return this.EVAL_BODY_INCLUDE; // } /* * (non-Javadoc) * * @see org.frameworkset.web.tag.RequestContextAwareTaartTagInternal() */ @Override protected int doStartTagInternal() throws JspException, IOException { ErrorsTag parent = (ErrorsTag)findAncestorWithClass(this, ErrorsTag.class); if(parent != null) { ObjectError error = parent.getCurrent_error(); parent.setContainErrorTag(true); // handlerError( error); String msg = TagHelper.handlerError( error,this.arguments,pageContext, this.getMessageSource(),this.getRequestContext().getLocale(),argumentSeparator, this.isHtmlEscape(),isJavaScriptEscape()); this.writeMessage(msg); } else { Errors errors = (Errors) this.getRequestContext().getErrors("default"); boolean flag = false; String code = null; FieldError error_ = null; Object arguments = null; if (errors != null) { List errors_ = errors.getFieldErrors(colName); String msg = null; MessageSource msr = this.getMessageSource(); Locale locale = this.getRequestContext().getLocale(); // FieldError error_ = null; StringBuffer buffer = new StringBuffer(); for (int i = 0; errors_ != null && i < errors_.size(); i++) { error_ = (FieldError) errors_.get(i); // handlerError( error_); msg = TagHelper.handlerError( error_,this.arguments,pageContext, msr,locale,argumentSeparator, this.isHtmlEscape(),isJavaScriptEscape()); buffer.append(msg); if(i > 0 && i < errors_.size() - 1) buffer.append("<br>"); } if(buffer.length() > 0) this.writeMessage(buffer.toString()); } } return this.EVAL_BODY_INCLUDE; } // private void handlerError(ObjectError error) throws IOException, NoSuchMessageException, JspException // { // // String code = null; // // Object arguments = null; // // if(error instanceof FieldError) // { // FieldError error_ = (FieldError)error; // // // if(this.arguments == null) // { // if(error_.getArguments() == null || error_.getArguments().length == 0) // { // arguments = new Object[]{error_.getField(),error_.getRejectedValue(),error_.getType()}; // } // else // { // arguments = error_.getArguments(); // } // } // else // { // arguments = this.arguments; // } // // // } // code = error.getCode(); // String msg = null; // // msg = resolveMessage(pageContext,this.getMessageSource(), // this.getRequestContext().getLocale(),code,arguments,argumentSeparator); // if(msg != null ) // { // if( msg.equals(code)) // { // if(error.getDefaultMessage() != null) // msg = error.getDefaultMessage(); // } // } // // if(msg != null && !msg.equals("")) // { // msg = isHtmlEscape() ? HtmlUtils.htmlEscape(msg) : msg; // msg = this.isJavaScriptEscape() ? JavaScriptUtils.javaScriptEscape(msg) : msg; // this.writeMessage(msg); // // } // } public void setArguments(String arguments) { this.arguments = arguments; } public String getText() { return text; } public void setText(String text) { this.text = text; } public void doFinally() { colName = null; arguments = null; text = null; argumentSeparator = TagHelper.DEFAULT_ARGUMENT_SEPARATOR; super.doFinally(); } public String getArgumentSeparator() { return argumentSeparator; } public void setArgumentSeparator(String argumentSeparator) { if(argumentSeparator != null && !argumentSeparator.equals("")) { this.argumentSeparator = argumentSeparator; } } }