package org.frameworkset.web.token; import java.lang.reflect.InvocationTargetException; import javax.servlet.jsp.JspException; import org.apache.log4j.Logger; import com.frameworkset.common.tag.BaseTag; /** * 动态令牌标签 * @author yinbp * */ public class DTokenTag extends BaseTag { private static Logger log = Logger.getLogger(DTokenTag.class); /** * 参数有3个值(如果没有指定默认为input类型): * json 输出json表达式,名称和值的分隔符默认为'号,如果要指定为"号,那么需要 * 通过jsonsplit参数来指定 * * input输出input hidden * * param(等号表达式) * * * */ private String element = "input"; private String jsonsplit ="'"; /** * 令牌所属窗体唯一标识,一个窗体只需要一个令牌,如果在同一个窗体 * 中dttoken标签需要出现多次,比如在逻辑判断中出现多次,那么就需要指定 * fid属性,除此以外都不需要指定fid属性 * */ private String fid ; private boolean cache = true; public String getElement() { return element; } public void setElement(String element) { this.element = element; } public String getJsonsplit() { return jsonsplit; } public void setJsonsplit(String jsonsplit) { this.jsonsplit = jsonsplit; } @Override public void doFinally() { super.doFinally(); element = "input"; jsonsplit ="'"; this.cache = true; this.fid = null; } @Override public int doStartTag() throws JspException { int ret = super.doStartTag(); if(TokenMethodHelper.isEnableToken != null) { try { Boolean enableToken = (Boolean)TokenMethodHelper.isEnableToken.invoke(null); if(!enableToken.booleanValue()) return ret; }catch(InvocationTargetException e) { log.info("build DTokenTag failed:"+e.getTargetException().getMessage()); } catch (RuntimeException e) { log.info("build DTokenTag failed:"+e.getMessage()); } catch (Exception e) { log.info("build DTokenTag failed:"+e.getMessage()); } catch (Throwable e) { log.info("build DTokenTag failed:"+e.getMessage()); } try { out.print(TokenMethodHelper.buildDToken.invoke(null, element,this.jsonsplit,request,fid,this.cache)); // TokenMethodHelper.doDTokencheck.invoke(null,request, response); } catch(InvocationTargetException e) { log.info("build DTokenTag failed:"+e.getTargetException().getMessage()); } catch (RuntimeException e) { log.info("build DTokenTag failed:"+e.getMessage()); } catch (Exception e) { log.info("build DTokenTag failed:"+e.getMessage()); } catch (Throwable e) { log.info("build DTokenTag failed:"+e.getMessage()); } } // if(!TokenHelper.isEnableToken() ) // { // return ret; // } // // try { // out.print(TokenHelper.getTokenService().buildDToken(element,this.jsonsplit,request,fid,this.cache)); // } catch (IOException e) { // throw new JspException(e); // } // catch (RuntimeException e) { // // // } return ret; } public String getFid() { return fid; } public void setFid(String fid) { this.fid = fid; } public boolean isCache() { return cache; } public void setCache(boolean cache) { this.cache = cache; } }