系统提示消息处理

每一个系统都会有一些方法是需要携带一些提示消息返回给用户的。

比如{操作成功、操作失败、系统错误} 等这些消息。

既然是消息,又有这些类型,那么根据面向对象的思想,它就不应该只是一个字符串,而是一个对象。

那么就定义下面这样一个TipMessage类

/**
 * 系统提示消息
 * @author zhoufeng
 *
 */
public class TipMessage {
	
	private String message ;
	
	private	String type ;
	
	public static final String INFO = "info";		//普通信息
	public static final String ERROR = "error";		//错误信息
	public static final String SUCCESS = "success";	//操作成功
	public static final String FAIL = "fail";		//操作失败

	public TipMessage(String message, String type) {
		this.message = message;
		this.type = type;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	} 

}

当某个Action方法有消息要返回给页面时,就创建一个TipMessage存放在session里面,然后返回到页面。

例如在某个Action方法中加入:

session.put(  ConstantSessionName.TIP_MESSAGE , new TipMessage("修改成功", TipMessage.SUCCESS)) ;

此时,就将一个TipMessage对象,存放在session中了,key为 ConstantSessionName.TIP_MESSAGE 常量 。 



很多页面都有可能需要来读取提示消息的。所以,可以创建一个common.jsp文件。在该文件里面读取Message 。然后在每一个页面都inclued该文件就可以了。

在jsp里面写java代码来获取session中的Message不是很合适,所以,可以定义自定义标签来读取Message

自定义标签如下:

/**
 * 页面输出SessionMessage
 * @author zhoufeng
 *
 */
public class SessionMessageTag extends BodyTagSupport {

	private String property ;	//要获取的属性
	private boolean remove ; 	//是否移除该条消息
	public static final String MESSAGE = "message";
	public static final String TYPE = "type";

	/** 
	 * 
	 */
	private static final long serialVersionUID = -6534466026479404293L;

	@Override
	public int doStartTag() throws JspException {
		try {
			Object msg = pageContext.getSession()
					.getAttribute(ConstantSessionName.TIP_MESSAGE) ;
			if(msg != null)  {
				TipMessage tm = (TipMessage) msg ;
				Object out = null;
				if(MESSAGE.equals(property))
					out = tm.getMessage() ;
				else if(TYPE.equals(property))
					out = tm.getType() ; 
				if(out != null && !"".equals(out))
					pageContext.getOut().print(out.toString());
				if(remove)
					pageContext.getSession().removeAttribute(ConstantSessionName.TIP_MESSAGE);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return BodyTagSupport.EVAL_BODY_INCLUDE; 
	}


	@Override
	public int doEndTag() throws JspException {
		return BodyTagSupport.EVAL_BODY_INCLUDE ;
	}


	public String getProperty() {
		return property;
	}


	public void setProperty(String property) {
		this.property = property;
	}


	public boolean isRemove() {
		return remove;
	}


	public void setRemove(boolean remove) {
		this.remove = remove;
	}


}


然后在WEB-INF目录下面加入tld文件:tuanfang.tld(文件名可以随便取)

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"   
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>tf</short-name>  
	<uri>http://www.tuanfang.tag</uri>
	<tag>
		<name>sessionMessage</name>
		<tag-class>com.tuanfang.util.diytag.SessionMessageTag</tag-class>
		<body-content>JSP</body-content>
		<attribute>
			<name>property</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		<attribute>
			<name>remove</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Boolean</type>
		</attribute>
	</tag>
   
</taglib>    

现在就可以在jsp页面使用自定义的标签了。

首先导入标签库:

<%@ taglib uri="http://www.tuanfang.tag" prefix="tf" %>

获取消息内容 <tf:sessionMessage property='message' remove='false' />

获取消息类型 <tf:sessionMessage property='type' remove='true' />

可以在common.jsp页面写一个js函数,使用jquery-ui 将消息显示出来,例如:

	$(function(){
		
		tip_message_dialog();
		
	});
	
	// 提示消息           
	function tip_message_dialog(){
		var msg = "<tf:sessionMessage property='message' remove='false' />"; 
		var type = "<tf:sessionMessage property='type' remove='true' />";    
		if(msg != null && "" != msg){  
			$("#tip_icon").attr("src" , "${basepath}/img/tip/" + type + ".gif" );
			$("#tip_message").html(msg);
			$("#tip_div").dialog({ 
				title:"系统提示",
				modal:true,
				width:400,       
				height:150, 
				resizable:false   
			}); 
		}
	}       
	  


其中type的作用,就是用来显示相应的图片的,比如当type为SUCCESS时,就在消息前面加上一个勾勾的箭头,如果type为FAIL,就加上一个叉叉的箭头。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值