package com.aggrepoint.winlet.jsp.taglib;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import com.aggrepoint.winlet.ContextUtils;
import com.aggrepoint.winlet.EnumMarkup;
/**
* 用于声明使用的标记语言
*
* 虽然AE在请求中会声明请求的标记语言类型,但应用端返回的页面不一定符合请求的标记类型。例如,请求中说明请求XHTML但应用不支持XHTML只能返回HTML
* 。 页面可以使用本标记明确声明页面的语言类型。若页面没有使用本标记明确声明标记类型,则视为页面标记类型与请求类型一致。
* 该标记在页面中必须先于其他Winlet标记出现
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class MarkupTag extends TagSupport {
static final long serialVersionUID = 0;
private static final String MARKUP_REQ_KEY = MarkupTag.class.getName()
+ ".MARKUP";
EnumMarkup markup;
public void setType(String mk) {
markup = EnumMarkup.fromName(mk);
}
public static EnumMarkup getMarkup(ServletRequest req) {
Integer i = (Integer) req.getAttribute(MARKUP_REQ_KEY);
if (i == null)
return null;
return EnumMarkup.fromId(i);
}
public static String getMarkupId(ServletRequest req) {
EnumMarkup markup = getMarkup(req);
if (markup == null)
return null;
return markup.getStrId();
}
public static String getMarkupName(ServletRequest req) {
EnumMarkup markup = getMarkup(req);
if (markup == null)
return null;
return markup.getName();
}
public static EnumMarkup getMarkup(HttpServletRequest req) {
Integer i = (Integer) req.getAttribute(MARKUP_REQ_KEY);
if (i == null)
return null;
return EnumMarkup.fromId(i);
}
public static String getMarkupId(HttpServletRequest req) {
EnumMarkup markup = getMarkup(req);
if (markup == null)
return null;
return markup.getStrId();
}
public static String getMarkupName(HttpServletRequest req) {
EnumMarkup markup = getMarkup(req);
if (markup == null)
return null;
return markup.getName();
}
public static EnumMarkup getMarkup() {
return getMarkup(ContextUtils.getRequest());
}
public static String getMarkupId() {
return getMarkupId(ContextUtils.getRequest());
}
public static String getMarkupName() {
return getMarkupName(ContextUtils.getRequest());
}
public int doStartTag() throws JspException {
try {
pageContext.getRequest().setAttribute(MARKUP_REQ_KEY,
new Integer(markup.getId()));
} catch (Exception e) {
throw new JspException(e.getMessage());
}
return (SKIP_BODY);
}
}