initPage.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ include file="/WEB-INF/jsp/common/tags.jsp" %>
<!DOCTYPE html>
<aos:head title="xxxx">
<aos:include lib="bootstravel"/>
</aos:head>
<body ontouchstart>
<header class='demos-header'>
<div class="demos-title">
</div>
</header>
<script type="text/javascript">
</script>
</body>
</html>
includeTag.java
package cn.osworks.aos.web.tag.impl.app;
import cn.osworks.aos.core.asset.AOSCxt;
import cn.osworks.aos.core.asset.AOSJson;
import cn.osworks.aos.core.asset.AOSReflector;
import cn.osworks.aos.core.asset.AOSUtils;
import cn.osworks.aos.core.asset.WebCxt;
import cn.osworks.aos.core.typewrap.Dto;
import cn.osworks.aos.core.typewrap.Dtos;
import cn.osworks.aos.system.dao.mapper.Aos_sys_paramMapper;
import cn.osworks.aos.system.dao.po.Aos_sys_paramPO;
import cn.osworks.aos.system.dao.po.Aos_sys_user_cfgPO;
import cn.osworks.aos.system.modules.dao.vo.UserInfoVO;
import cn.osworks.aos.web.tag.core.model.TagDto;
import java.io.IOException;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
public class IncludeTag extends AppTagSupport {
private static final long serialVersionUID = 1L;
private String lib;
private String css;
private String js;
private String var;
private void doPrepare()
throws JspException {
}
public int doStartTag()
throws JspException {
doPrepare();
Dto tagDto = new TagDto();
super.pkgProperties(tagDto);
int travel_sign = 0;
if (AOSUtils.isNotEmpty(this.lib)) {
String[] libs = this.lib.split(",");
for (String libkey : libs) {
tagDto.put(libkey, "true");
if(libkey.equals("bootstravel")){
travel_sign = 1;
}
}
}
tagDto.put("css", this.css);
tagDto.put("js", this.js);
UserInfoVO userInfoVO = WebCxt.getUserInfo(this.pageContext.getSession());
String skin = WebCxt.getCfgByUser(this.pageContext.getSession(), "skin_");
if(travel_sign==1){
tagDto.put("skin", "bootstravel");
}
else{
tagDto.put("skin", skin);
}
tagDto.put("var", this.var);
if (AOSUtils.isNotEmpty(this.var)) {
String[] arrarVars = this.var.split(",");
for (String curvar : arrarVars) {
if (curvar.equalsIgnoreCase("user")) {
if (AOSUtils.isNotEmpty(userInfoVO))
tagDto.put("userString", AOSJson.toJson(userInfoVO));
} else if (curvar.equalsIgnoreCase("syscfg")) {
Dto sysCfgDto = Dtos.newDto();
Aos_sys_paramMapper aos_sys_paramMapper = (Aos_sys_paramMapper) AOSCxt.getBean("aos_sys_paramMapper");
List<Aos_sys_paramPO> aos_sys_paramPOList = aos_sys_paramMapper.list(Dtos.newDto());
for (Aos_sys_paramPO aos_sys_paramPO : aos_sys_paramPOList) {
sysCfgDto.put(aos_sys_paramPO.getKey_(), aos_sys_paramPO.getValue_());
if ((AOSUtils.isNotEmpty(userInfoVO)) &&
(AOSUtils.isNotEmpty(aos_sys_paramPO.getOverwrite_field_())) && ("1".equals(aos_sys_paramPO.getIs_overwrite_()))) {
Aos_sys_user_cfgPO aos_sys_user_cfgPO = WebCxt.getUserCfgInfo(userInfoVO.getId_());
String value = "";
if (AOSUtils.isNotEmpty(aos_sys_user_cfgPO)) {
value = (String) AOSReflector.getFieldValue(aos_sys_user_cfgPO, aos_sys_paramPO.getOverwrite_field_());
}
if (AOSUtils.isNotEmpty(value)) {
sysCfgDto.put(aos_sys_paramPO.getKey_(), value);
}
}
}
tagDto.put("sysCfgString", AOSJson.toJson(sysCfgDto));
}
}
}
String jspString = mergeFileTemplate("app/includeTag.vm", tagDto);
try {
this.pageContext.getOut().write(jspString);
} catch (IOException e) {
throw new JspException(e);
}
return 0;
}
public void release() {
super.release();
}
public String getLib() {
return this.lib;
}
public void setLib(String lib) {
this.lib = lib;
}
public String getCss() {
return this.css;
}
public void setCss(String css) {
this.css = css;
}
public String getJs() {
return this.js;
}
public void setJs(String js) {
this.js = js;
}
public String getVar() {
return this.var;
}
public void setVar(String var) {
this.var = var;
}
}
includeTag.vm
##导入WEBUI库
#if($ext)
#if($skin == "neptune")
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/ext/resources/css/ext-all-neptune.css" />
<link rel="stylesheet" type="text/css" href="$cxt/static/css/skin/neptune.css" />
#elseif($skin == "gray")
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/ext/resources/css/ext-all-gray.css" />
<link rel="stylesheet" type="text/css" href="$cxt/static/css/skin/gray.css" />
#elseif($skin == "aos")
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/ext/resources/css/ext-all-aos.css" />
#elseif($skin == "ding")
##TODO
#else
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/ext/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="$cxt/static/css/skin/blue.css" />
#end
<link rel="stylesheet" type="text/css" href="$cxt/static/css/aos-all.css" />
##<script type="text/javascript" src="$cxt/static/weblib/ext/bootstrap.js"></script>
<script type="text/javascript" src="$cxt/static/weblib/ext/ext-all.js"></script>
<script type="text/javascript" src="$cxt/static/weblib/ext/locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="$cxt/static/js/aos.js"></script>
#end
#if($jquery)
<script type="text/javascript" src="$cxt/static/weblib/jquery/jquery.min-1.10.2.js"></script>
#end
#if($buttons)
##如果需要使用下拉菜单,则还需要引入buttons.js
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/buttons/css/buttons.css" />
#end
#if($raphael)
<script type="text/javascript" src="$cxt/static/weblib/raphael/raphael.js"></script>
#end
#if($bootstrap)
##TODO
#end
#if($jqueryui)
##TODO
#end
#if($bootstravel)
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/bootstravel/css/animate.css">
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/bootstravel/css/icomoon.css">
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/bootstravel/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/bootstravel/css/flexslider.css">
<link rel="stylesheet" type="text/css" href="$cxt/static/weblib/bootstravel/css/style.css">
<script src="js/respond.min.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/jquery.min.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/jquery.easing.1.3.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/bootstrap.min.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/jquery.waypoints.min.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/jquery.flexslider-min.js"></script>
<script src="$cxt/static/weblib/bootstravel/js/main.js"></script>
#end
##导入指定的资源文件
#if($css)
<link rel="stylesheet" type="text/css" href="$css" />
#end
#if($js)
<script type="text/javascript" src="$js"></script>
#end
##导出用户信息和系统参数
#if($var)
<script type="text/javascript">
##当前用户对象及用户配置信息(无算法计算,为用户参数原始值)
#if($userString)
AOS.User = ${userString};
#end
##系统配置参数(算法计算:根据是否允许用户参数覆盖和是否有对应的用户配置参数来计算最终值)
#if($sysCfgString)
AOS.SysCfg = ${sysCfgString};
#end
</script>
#end