下面列出了org.springframework.web.servlet.view.AbstractTemplateView#org.beetl.core.Context 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void main(String[] args)
{
EmptyFunction fn = new EmptyFunction();
Context ctx = new Context();
ctx.set("list", new ArrayList());
ctx.set("array", new Object[]
{});
ctx.set("array1", new Object[]
{ 1, 2 });
System.out.println(fn.call(new Object[]
{ "lijz" }, ctx));
System.out.println(fn.call(new Object[]
{ "list" }, ctx));
System.out.println(fn.call(new Object[]
{ "array" }, ctx));
System.out.println(fn.call(new Object[]
{ "array1" }, ctx));
}
@Override
public String call(Object[] arg0, Context arg1) {
StringBuilder sb = new StringBuilder("");
if(arg0[0] instanceof List){
List<Verify> list = (List)arg0[0];
for (int i = 0; i < list.size(); i++) {
Verify verify = list.get(i);
if(i < list.size() - 1){
sb.append(verify.getName()+"|");
}else{
sb.append(verify.getName());
}
}
}
return sb.toString();
}
public Boolean call(Object[] paras, Context ctx)
{
if (ctx.globalVar == null)
return false;
String key = null;
for (Object o : paras)
{
key = (String) o;
if (ctx.globalVar.containsKey(key))
{
continue;
}
else
{
return false;
}
}
return true;
}
@Override
public void check(Context ctx)
{
StatementParser seacher = new StatementParser(program.metaData.statements, program.gt, program.res.getId());
Map<Class, Listener> map = initProbeNode();
for (Entry<Class, Listener> entry : map.entrySet())
{
seacher.addListener(entry.getKey(), entry.getValue());
}
this.initProbeNode();
seacher.parse();
this.program.gt.getProgramCache().set(program.res.getId(), program);
ProgramReplaceEvent event = new ProgramReplaceEvent(program);
this.program.gt.fireEvent(event);
}
public Object evaluate(Context ctx)
{
if (map.size() == 0)
{
return new LinkedHashMap();
}
else
{
Map values = new LinkedHashMap(map.size());
for (Entry<String, Expression> entry : map.entrySet())
{
values.put(entry.getKey(), entry.getValue().evaluate(ctx));
}
return values;
}
}
@Override
public void infer(InferContext inferCtx)
{
Type type = (Type) inferCtx.temp;
VirtualClassAttribute vae = inferCtx.gt.getVirtualAttributeEval(type.cls, name);
if (vae == null)
{
this.type = Type.ObjectType;
}
else
{
Method m = ObjectUtil.getGetMethod(vae.getClass(), "eval", new Class[]
{ Object.class, String.class, Context.class });
this.type = new Type(m.getReturnType());
}
}
public String call(Object[] paras, Context ctx)
{
Object o = paras[0];
if (o != null)
{
try
{
ctx.byteWriter.writeString(o.toString());
}
catch (IOException e)
{
BeetlException be = new BeetlException(BeetlException.CLIENT_IO_ERROR_ERROR);
throw be;
}
}
return "";
}
@Override
public void execute(Context ctx)
{
try
{
Object value = exp.evaluate(ctx);
if (format != null)
{
value = format.evaluateValue(value, ctx);
}
ctx.byteWriter.writeObject(value);
}
catch (Exception ex)
{
}
}
/**
* 方法调用
*
* @param args
* 方法参数列表
* @param context
* Beetl执行上下文
* @return SpEL表达式执行结果
*/
@Override
public Object call(Object[] args, Context context) {
// 只能有一个参数且只能为字符串
if ((args.length >= 1) && (args[0] instanceof String) && (args[0] != null)) {
String spel = (String) args[0];
Expression expression = getExpression(spel);
// 如果有第二参数,取他作为根对象
if ((args.length >= 2) && (args[1] != null)) {
return expression.getValue(createEvaluationContext(args[1], context));
} else {
return expression.getValue(createEvaluationContext(Collections.emptyMap(), context));
}
}
return null;
}
public String call(Object[] paras, Context ctx)
{
if (ASSERT)
{
boolean result = (Boolean) paras[0];
String msg = null;
if (paras.length > 1)
{
msg = (String) paras[1];
}
if (!result)
{
throw new RuntimeException(msg == null ? "断言异常" : msg);
}
return "";
}
else
{
return "";
}
}
@Override
public Object call(Object[] paras, Context ctx) {
String clsName = (String)paras[0];
Class cls = ctx.gt.getClassSearch().getClassByName(clsName);
if(cls!=null){
try{
return cls.newInstance();
}catch(Exception ex){
throw new RuntimeException("创建类实例失败:"+cls+",error:"+ex.getMessage(),ex);
}
}else{
throw new RuntimeException("不能加载类:"+clsName+" classloader:"+ctx.gt.getClassLoader());
}
}
@Override
public Boolean call(Object[] paras, Context ctx) {
// 如果没有安全上下文,固定返回true
SecurityContext securityContext = SecurityContextHolder.getContext();
if (securityContext == null) {
return true;
}
// 用户未登录
Authentication authentication = getAuthentication(securityContext);
// 如果未提供URL,固定返回true
if ((paras.length == 0) || (paras[0] == null) || !(paras[0] instanceof String)) {
return true;
}
String url = (String) paras[0];
// 默认请求方式为GET,由第二参数给定
String method = "GET";
if ((paras.length > 1) && (paras[1] != null) && (paras[1] instanceof String)) {
method = (String) paras[1];
}
return privilegeEvaluator.isAllowed(servletContext.getContextPath(), url, method, authentication);
}
public static void main(String[] args)
{
Double d = 1232323232323.89;
System.out.println(d);
String str = d.toString();
double c = Double.parseDouble(str);
System.out.println(c);
ParseDouble pDouble = new ParseDouble();
Context ctx = new Context();
System.out.println(pDouble.call(new Object[]
{ -01.}, ctx));
System.out.println(pDouble.call(new Object[]
{ 2332.23213 }, ctx));
System.out.println(pDouble.call(new Object[]
{ "-1.023" }, ctx));
System.out.println(pDouble.call(new Object[]
{ "abcd" }, ctx));
}
@Override
public void execute(Context ctx)
{
// TODO Auto-generated method stub
Object value = condtion.evaluate(ctx);
if (ALU.isTrue(value, this))
{
ifStatement.execute(ctx);
}
else
{
if (elseStatement != null)
{
elseStatement.execute(ctx);
}
}
}
public Object call(Object[] paras, Context ctx)
{
HttpServletRequest request = (HttpServletRequest)ctx.getGlobal(WebVariable.REQUEST);
Cookie[] cookies = request.getCookies();
if(paras.length==0){
return cookies;
}else{
String name = (String)paras[0];
for(Cookie cookie:cookies){
if(cookie.getName().equals(name)){
return cookie;
}
}
return null;
}
}
public void execute(Context ctx)
{
Object value = exp.evaluate(ctx);
Object obj = varRef.evaluateUntilLast(ctx);
Object key = null;
if(lastVarAttribute instanceof VarSquareAttribute){
key = (((VarSquareAttribute)lastVarAttribute).exp).evaluate(ctx);
}else {
key = lastVarAttribute.name;
}
try{
ObjectAA.defaultObjectAA().setValue(obj, key, value);
}catch(ClassCastException ex){
BeetlException bx = new BeetlException(BeetlException.ATTRIBUTE_INVALID,ex);
bx.pushToken(lastVarAttribute.token);
throw bx;
}catch(BeetlException be){
be.pushToken(lastVarAttribute.token);
throw be;
}
}
@Override
public Object call(Object[] paras, Context ctx) {
Object o = paras[0];
if(o==null) {
throw new NullPointerException();
}
if(o instanceof Map) {
return false;
}
Class type = o.getClass();
for(int i=1;i<paras.length;i++) {
String key = (String)paras[i];
MethodInvoker invoke = ObjectUtil.getInvokder(type, key);
if(invoke==null) {
return false;
}else if(invoke instanceof GeneralGetMethodInvoker) {
return false ;
}
}
return true;
}
@Override
public Object call(Object[] paras, Context ctx)
{
Object o = paras[0];
String str = "";
if (o == null)
throw new NullPointerException("Error:parseLong(null)");
long result;
if (o instanceof Number)
{
long n = ((Number) o).longValue();
str = String.valueOf(n);
}
else
{
str = o.toString();
}
if (str.indexOf(".") != -1)
{
str = str.split("\\.")[0];
}
Pattern pattern = Pattern.compile("-?[0-9]*");
Matcher isNum = pattern.matcher(str);
if (o == null || o.equals("") || !isNum.matches())
{
throw new RuntimeException("无法正确转换至long格式");
}
try
{
result = Long.parseLong(str);
}
catch (NumberFormatException e)
{
throw new RuntimeException("超出long范围");
}
return result;
}
@Override
public void initOther() {
groupTemplate.registerFunctionPackage("shiro", new ShiroExt());
groupTemplate.registerFunctionPackage("tool", new ToolUtil());
groupTemplate.registerFunctionPackage("kaptcha", new KaptchaUtil());
groupTemplate.registerTagFactory("dictSelector", new TagFactory() {
@Override
public Tag createTag() {
return dictSelectorTag;
}
});
groupTemplate.registerFunction("env", new Function() {
@Override
public String call(Object[] paras, Context ctx) {
String key = (String)paras[0];
String value = env.getProperty(key);
if(value!=null) {
return getStr(value);
}
if(paras.length==2) {
return (String)paras[1];
}
return null;
}
protected String getStr(String str) {
try {
return new String(str.getBytes("iso8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
});
}
public void init(Context ctx, Object[] args, Statement st)
{
super.init(ctx, args, st);
if (args.length == 0 || args.length > 3)
{
throw new RuntimeException("参数错误,期望child,Map .....");
}
String child = (String) args[0];
// 已经注册的Tag
TagFactory tagFactory = null;
String functionTagName = child.replace(':', '.');
tagFactory = this.gt.getTagFactory(functionTagName);
if (tagFactory == null)
{
throw new RuntimeException("标签初始化错误,未找到指定的标签实现类" + functionTagName);
}
tag = tagFactory.createTag();
if (tag == null)
{
throw new RuntimeException("找不到注册的Tag");
}
else if (!(tag instanceof TagVarBinding))
{
throw new RuntimeException(tag.getClass() + " 必须是TagVarBinding的实现类");
}
tag.init(ctx, args, st);
}
/**
*
* @param paras 查询条件类名
* @param ctx
* @return
*/
@Override
public Object call(Object[] paras, Context ctx) {
String className = (String) paras[0];
try {
List<Map<String, Object>> list = AnnotationUtil.getInstance().getAnnotations(Query.class, Class.forName(className));
return list;
} catch (ClassNotFoundException e ) {
e.printStackTrace();
return null;
}
}
@Override
public List<FileItem> call(Object[] paras, Context arg1) {
String attachmentId = (String)paras[0];
if(StringUtils.isEmpty(attachmentId)) {
return Collections.EMPTY_LIST;
}
return fileService.queryByBatchId(attachmentId);
}
public Object call(Object[] paras, Context ctx) {
FunctionItem tree = platFormService.buildFunction();
StringBuilder sb = new StringBuilder(256).append("[");
FunctionItem root = tree.getChildren().get(0);
build(sb,root);
sb.append("]");
return sb.toString();
}
@Override
public String call(Object[] objects, Context context) {
Object o=objects[0];
if(o!=null){
String path=o.toString();
if(path.equals("/")){
return path;
}else{
path=path.substring(path.lastIndexOf("/"));
path= StringUtil.ltrim(path,new char[]{'/'});
}
return path;
}
return null;
}
@Override
public Object call(Object[] paras, Context ctx)
{
String str = (String) paras[0];
String json = "var a=".concat(str).concat(";");
Map map = BeetlKit.executeAndReturnRootScopeVars(json);
return map.get("a");
}
@Override
public String call(Object[] objects, Context context) {
Object o=objects[0];
if(o!=null){
String path=o.toString();
if(path.equals("/")){
return path;
}else{
path=path.substring(path.lastIndexOf("/"));
path= StringUtil.ltrim(path,new char[]{'/'});
}
return path;
}
return null;
}
@Override
public Object call(Object[] paras, Context ctx) {
if (paras.length == 1) {
String source = (String) paras[0];
if (!Strings.isNullOrEmpty(source)) {
String path = StringUtils.substringBeforeLast(source, ".");
String extension = StringUtils.substringAfterLast(source, ".");
return path + "-thumb." + extension;
}
}
return null;
}
public Object evaluate(Context ctx, Object o)
{
try{
return aa.value(o, name);
}catch(ClassCastException ex){
// System.out.println(o.getClass().getClassLoader()+" ==== "+aa.getClass().getClassLoader());
throw BeetlUtil.throwCastException(ex,ctx.gt);
}
}
@Override
public Object call(Object[] paras, Context ctx) {
RequestContext requestContext = (RequestContext) ctx
.getGlobal(AbstractTemplateView.SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE);
Assert.notNull(requestContext);
Assert.notNull(paras);
Assert.isTrue(paras.length > 0);
String code = (String) paras[0];
Object[] args = paras.length > 1 ? Arrays.copyOfRange(paras, 1, paras.length) : null;
return requestContext.getMessage(code, args);
}
@Override
public Object call(Object[] objects, Context context) {
String value = (String) objects[0];
String ovalue = (String) objects[1];
if(S.eq(value, ovalue, S.IGNORECASE)){
return "checked";
}
return "";
}