使用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
 
 
 
 
 
 
