使用JFinal,版本为3.2,做指令扩展,比如以下代码,实现检查一个字符串中是否包含“?”(问号),代码如下:
public class IndexOfQ extends Directive {
private Expr valueExpr;
public IndexOfQ() {
// TODO Auto-generated constructor stub
}
@Override
public void exec(Env env, Scope scope, Writer writer) {
// TODO Auto-generated method stub
Object value = valueExpr.eval(scope);
System.out.println(getClass() + ",value=" + value.toString());
String valueString = value.toString();
if(doDeal(valueString)) {
write(writer,"1");
} else {
write(writer, "0");
}
stat.exec(env, scope, writer); //这句是后面加的,试了多种方式都不行。
}
public void setExprList(ExprList exprList) {
valueExpr = exprList.getExprArray()[0];
}
public boolean doDeal(String str) {
if(str.indexOf("?") > 0) {
return true;
} else {
return false;
}
}
}在JFinalConfig的实现类中的configEngine方法中增加:
me.addDirective("IndexOfQ", new IndexOfQ());在html页面中调用:
#if(IndexOfQ("abc.action?value=1") == '1') 包含问号 #else 不包含问号 #end报错如下:
com.jfinal.render.RenderException: com.jfinal.template.TemplateException: Shared method not found: IndexOfQ(java.lang.String)
请问一下,如何解决?
非常感谢!
项目:JFinal