JFinal

登录 注册
  • @shiweixian 打包的时候在 package.xml 里面配置一下将 jfinal-scheduler-2.2.0.jar 复制到 lib 下的配置,里面已经有了一些复制文件的示例,照抄即可
    12-03 10:56 回复
  • 简洁方便,快捷,感谢分享

    话说阿里也学 amazon 在玩 serverless 了?
    12-03 10:54 回复
  • jfinal 模板没有继承功能,上述的 #include 功能,仅仅是将目标模板原样不动放在 #include 指令所在之处

    而 #@layout() 是模板函数调用,#define content() 是模板函数定义,这里面只有极其简单的函数定义与调用,再也没有任何其它的概念

    如果你希望实现类似于重写父类板的某些 html 代码,起码有如下两个方案:
    1: 将被 #include 模板中的需要变化的部分使用变量开放出来,例如先用 htmlFragment做好埋点工作:
    #if (htmlFragment)
    #(htmlFragment)
    #else
    这里放上htmlFragment 不存在时的默认 html 内容
    #end

    然后,在主模板中为 htmlFragment 赋值即可:
    #inlcue("_layout.html")
    #set(htmlFragment = ....)
    #@layout()

    当然,这个 htmlFragment 内容比较多的时候,可以使用 #string 指令来做:
    #string(htmlFragment)
    这里放大量 html
    #end

    2: 第二个方法是在需要变动的地方放上模板函数的安全调用,例如:
    #@htmlFragment?()
    注意上面的函数名后方有个问号,就是说函数存在时才真正调用,不存在则跳过

    由于 jfinal enjoy 的功能极为简洁强大,所以还有很多其它办法,例如自定义指令实现类似多态的功能等等,这种扩展是最彻底最直接的,看一下 Directive 抽象类中的注释,进行扩展即可
    12-03 10:52 回复
  • 在 FreeMakerRender 中的 render() 方法中调试一下,看具体是什么行为

    默认是去 src/main/webapp 下面去找模板,你删掉项目根目录下面的 webapp , 只保留 src/main/webapp 试试
    12-02 12:39 回复
  • 根据异常提示去找原因,我们用着都没问题,你手动修改的那个地方对于部署可能会造成问题,你测试一下
    12-02 11:39 回复
  • 异常提示的是:Template not found for name "/templates/demo.ftl".

    那么将模板文件放在 webapp/templates 下面即可
    12-02 11:39 回复
  • 其实,只要单步调试一下 com.jfinal.token.TokenManager 以及 validateToken() 内部工作机制,很容易就明白怎么做了,代码量极少,不超过 100 行
    12-01 12:03 回复
  • @hb963724769 没有表单的情况,可以将 token 当成 json 数据中的一个值传到后端,但后端就不能使用 validateToken() 进行验证了

    参考 validateToken() 对你的 josn 进行验证即可。 createToken() 仍然可用,但你的 json 数据中要想办法将 token 值用上,例如:

    {
    token : "#(_jfinal_token)",
    你的 json 数据其它值在此
    }

    上面的 _jfinal_token 这个 key 值读取 token 的默认变量值,你也可以在创建 token 时手动指定,例如:
    createToken("myTokenName")
    12-01 12:03 回复
  • 当然,close 掉后回到原来的数据库,这个不是 jfinal 做的,是 jedis 内部做的
    11-30 18:20 回复
  • close 掉以后,数据库会回到设置之前的那个,鼠标放在这个 select 方法上,自动弹是出注释中的用法,照抄即可,里面应该也说明了这样做的原因

    本质是,如果 close 后不回到原来的数据库,那么这个未被 close 掉的连接被下个线程获取的时候仍然会操作你改变后的数据库,从而造成线程安全问题
    11-30 18:20 回复
  • 既然是用的 jfinal, 得这么来用:
    FastJson.getJson().toJson(...)

    因为 record 没有 setter 方法,而 fastjson 默认是根据 getter 方法来转换的,所以 jfinal 内部对 fastjson 做了扩展,详情看一下 com.jfinal.json 包下面的源码

    jfinal 文档频道也对 json 的机制与配置做了详细说明,看一次能省很多时间
    11-30 18:16 回复
  • jfinal enjoy 引擎用的 #(token)
    11-30 17:34 回复
  • @hb963724769 还忘了在表单中要加个隐藏域了,否则值过不来 ,在表单中添加下面的代码:
    #(token)

    即可自动生成隐藏的表单域,如果你是 freemaker、jsp , 用一下:
    ${token}
    11-30 17:34 回复
  • 每次进入表单页面之前,要走一个 action ,在这个 action 中使用 createToken 创建 token ,被提交的目标页面使用 validateToken() 即可
    11-30 16:50 回复