JFinal

登录 注册
  • 不提供反序列化不是因为有成熟的,如果是这个原因序列化也不会提供,是因为反序列化后类型错误,没有哪个jar可以反序列化出正确类型,在model中不存在类型的定义,所以如果需要正确的反序列化,还是需要常规的Bean
    09-28 20:22 回复
  • @JFinal 解决方式
    WebAppContext context = new WebAppContext("/","/");
    ........
    context.setResourceBase("/WEB-INF");
    ........
    随便设置一个路径就可以了,不存在也没关系


    最好还是改下jFinal源码,不在启动时做异常检查,因为有些时候不需要模板引擎的,不设置路径就导致启动不了

    设置jfinal的PathKit.setWebRootPath不行,主要是jFinal.initPathUtil会重新设置PathKit.setWebRootPath,所以后面执行的engine.setBaseTemplatePath就会有问题
    05-18 12:47 回复
  • 上面写错了
    “在windows下debug显示参数baseTemplatePath为盘符(E:/),在linux下为/”
    改为:
    在windows下debug显示参数baseTemplatePath为盘符(E:),在linux下为空
    05-17 18:17 回复
  • 05-17 18:12 回复
  • 我是这样处理的,将需要刷新的div创建一个Directive,在相应模板中引入,需要刷新时,调用ajax,执行后端指令渲染,代码如下:

    Engine engine = RenderManager.me().getEngine();
    String[] params = getParaValues("params");// 指令参数
    String name = getPara("name");// 指令名称
    if(engine.getDevMode()){
    log.info("页面请求指令:"+name+",参数:"+StringUtils.join(params));
    }
    try{
    renderHtml(engine.getTemplateByString("#"+name+"("+StringUtils.join(params, ",")+")").renderToString(new HashMap()));
    }catch(Exception e) {
    log.warn("请求指令异常", e);
    renderNull();
    }

    这块代码可以执行任意的指令标签局部刷新,用起来我觉得比你上面类beetl的处理方式灵活点

    还有点需要注意就是上面的params参数,这个参数需要在对应指令里设值,设值的简化代码如下:
    data.put("dataJson", JsonKit.toJson(exprList.evalExprList(scope)[0]));
    就是将标签的参数传到页面上,便于ajax刷新标签时带参数
    05-09 12:56 回复
  • 上面回复里的html标签全没了,不能理解的话我再发
    04-08 09:56 回复
  • 可能描述的不清晰,上面的模板C是自定义指令里使用的模板文件,在模板B中使用该指令时,无法调用指令中的js()模板函数,因为指令js仅仅在直接引用模板A的模板下是可以被调用的
    不能截图,大致写下三个文件的代码
    ---------------------------------------------------------------------------------------
    A模板文件:
    #define layout()



    ........
    #@main()
    .......
    #@js?()


    #end
    ---------------------------------------------------------------------------------------
    B模板文件:
    #include("A.html")
    #@layout()
    .....
    #define main()
    ......

    #hotTrade({"titleName":"XXX标题","num":4})

    .......
    #end
    ---------------------------------------------------------------------------------------
    C模板文件,为自定义指令hotTrade使用的模板文件,大致代码如下:
    .......

    #define js()

    #end

    ---------------------------------------------------------------------------------------
    问题是:在模板A中无法调用指令hotTrade模板中的js()
    04-08 09:54 回复