package com.ycsoft.commons.abstracts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import com.ycsoft.commons.helper.LoggerHelper;
/**
* <p>
* 抽象的Action,包含常用的Action属性、函数等。将错误消息进行了封装。
* 所有的消息内容均来自属性配置文件中。并且将<code>ActionError、ActionMessage</code>
* 统一定义为:<code>ActionError</code> </p>
*
* @author hh
*/
public class AbstractAction extends ActionSupport
implements ServletRequestAware {
private static final long serialVersionUID = 100321896328163821l;
/**
* 日志管理对象
*/
protected HttpServletRequest request ;
/**
* @deprecated "error" result has not been used
*/
@Deprecated
public static final String ERROR = "error";
/**
* 添加 Action 错误
* @param msgKey 消息key
* @param args 消息中包含占位符对应的value
*/
public void addActionErrorMsg(String msgKey , String ...args) {
if( hasMsgKey( msgKey ) ){
super.addActionError( getText( msgKey , args) ) ;
}
}
/**
* 添加属性错误
* @param fieldName 属性名称
* @param msgKey 消息key
*/
public void addFieldErrorMsg( String fieldName ,String msgKey){
if( hasMsgKey( msgKey ) ){
super.addFieldError( fieldName , getText( msgKey) ) ;
}
}
// check msg key and log console
private boolean hasMsgKey( String msgKey ){
if ( false == hasKey( msgKey )) {
LoggerHelper.warn(AbstractAction.class,getText("abstract.msg_not_found", new String[]{msgKey}));
return false ;
}
return true ;
}
/**
* @deprecated Use {@link #addActionErrorMsg()}.
*/
@Override
@Deprecated
public void addActionError(String anErrorMessage) {
super.addActionError( anErrorMessage );
}
/**
* @deprecated Use {@link #addFieldErrorMsg()}.
*/
@Override
@Deprecated
public void addFieldError(String fieldName, String errorMessage) {
super.addFieldError(fieldName, errorMessage);
}
/**
* @deprecated Use {@link #addActionErrorMsg()}
*/
@Override
@Deprecated
public void addActionMessage(String aMessage) {
super.addActionMessage( aMessage );
}
public HttpSession getSession() {
return request.getSession() ;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}