JAva jstlカスタムラベル

4623 ワード

package com.xilehang.common.util;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.json.JSONObject;

/**
 *          ,  json map  
 * @author ctl
 *
 */
public class StatusTag extends TagSupport {
	static Logger logger = LoggerFactory.getLogger(StatusTag.class);  
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;


	protected String name;

	private static HashMap> hashMap;

	protected String type;
	
	private String jsonName;
	
	private String mapName;
	
	public String getMapName() {
		return mapName;
	}

	public void setMapName(String mapName) {
		this.mapName = mapName;
	}

	public String getJsonName() {
		return jsonName;
	}

	public void setJsonName(String jsonName) {
		this.jsonName = jsonName;
	}
    static{
    	hashMap=new HashMap>();
    	Map portalPayStatus=new HashMap();
    	portalPayStatus.put("0", "    ");
    	portalPayStatus.put("1", "   ");
    	portalPayStatus.put("2", "    ");
    	portalPayStatus.put("3", "    ");
    	hashMap.put("portalPayStatus", portalPayStatus);
    }
	@SuppressWarnings("unchecked")
	public int doEndTag() throws JspException {

		JspWriter out=null;
		try {
			out = pageContext.getOut();
			if("json".equals(type)){//     json    js    zai/conf/json  
				if(hashMap.get(jsonName)==null||"".equals(hashMap.get(jsonName))){//        json    map   ,        
					Scanner scanner = new Scanner(StatusTag.class.getClassLoader().getResourceAsStream("json" + File.separator + jsonName + ".js"),"utf-8");
					StringBuilder buf = new StringBuilder();

					while (scanner.hasNext()) {
						String str = scanner.nextLine();
						if (str != null) {
							buf.append(str.trim());
						}
					}
					scanner.close();
					Map jsonMap = JSONObject.fromObject(buf.toString());
					hashMap.put(jsonName, jsonMap);//     map ,          js  
					String value=jsonMap.get(name).toString();
					if(value==null){
						out.print(name);
					}else{
						out.print(value);
					}
				}else{
					String value=(String) hashMap.get(jsonName).get(name);
					if(value==null){
						out.print(name);
					}else{
						out.print(value);
					}
				}
				
			}else if("map".equals(type)){
				out.print(hashMap.get(mapName).get(name));
			}
			

		} catch (Exception e) {
			try {
				out.print(name);
			} catch (IOException e1) {
			}
			logger.error("         ",e);
		}

		return super.doEndTag();
	}

	public int doStartTag() throws JspTagException {

		return EVAL_BODY_INCLUDE;

	}

	public HashMap> getHashMap() {
		return hashMap;
	}


	public String getName() {
		return name;
	}

	public void setName(String name) {
		if(name!=null){
			this.name = name.trim();
		}else{
			this.name="";
		}
	}

	public String getType() {
		return type;
	}

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



	1.0
	1.1
	StatusTag
	
		payStatus
		com.xilehang.common.util.StatusTag
		
			name
			true
			true
		
		
			mapName
			false
			true
		
		
			type
			false
			true
		
		
			jsonName
			false
			true
		
	

 

 

portalpayStatus.js     
{'0':'    ','1':'   ','2':'    ','3':'    '}