2017-09-04 10:36

如果你的 service 是无状态的,在 controller 中用一个 static 就可以了:
private static UserService srv = Duang.duang(UserServiceImpl.class);

2017-09-04 10:35

@自导自演 单例问题看一下这里:
https://www.oschina.net/question/197668_221395

2017-09-04 10:34

1:先看一下控制台输出的 jfinal action report,看一下这个 SupplyRealProductValidator 是否在拦截器列表里面,先确保这个是有效的

2:有问题没有在前端显示是啥意思?

3:带 . 的完全不需要转义处理,在 jfinal club 中有这样的例子

Validator 本质也是一个 Interceptor,单步调试进入底层看一下就会理解很多细节

2017-09-03 23:39

@doocal order 反着配置试试,先找 jsp

2017-09-03 23:14

在 jfinal 中很容易, render(String) 就是用 enjoy,而 renderJsp(String) 就是在用 jsp

而在 spring 中,貌似是通过一个叫 order 的配置,好多年不用 spring,没法帮到你,建议找找相关资料

2017-09-03 23:05

在首页下载 jfinal 手册,里面的 6.11.3 Engine对象管理,适用于 enjoy

2017-09-03 23:04

engine.addSharedObject("cls", new DictUtils()); 这行代码的 Engine 对象是怎么被创建出来的,后续在使用 engine 对象解析模板获取 Template 对象要确保是同一个 engine 对象,只有这样在前面的配置才能被应用上

我举个例子,看以下两行代码:
Engine.use().engine.addSharedObject("cls", new DictUtils());
Engne engine = new Engine();
第一行代码中对 engine 对象的配置,将与第二行代码中的 engine 对象毫无关系

有关系的用法如下:
Engine.use().engine.addSharedObject("cls", new DictUtils());
Engne engine = Engine.use();

2017-09-03 22:47

@doocal 仔细看一下 6.11.3 Engine对象管理

2017-09-03 22:28

@doocal info(Engine engine) 这方法中的 engine 从哪里来的?

2017-09-03 22:14

首先要强调一点, service 绝对不能省,现在就连 jfinal 官网的 demo 将添加了 Service 层,就是担心大家养成坏习惯

如果省去 service,后期维护将是一场噩梦,而这与 jfinal 毫无关系,使用任何 MVC 框架,只要是省去 service,全都会是噩梦

不管业务逻辑是不是被重用,全部写在 service 层,没有任何商量的余地

ehcache 的缓存不会自动更新,需要自己采用一定的策略通过相关 api 删除缓存或更新缓存,关于缓存,看一下 ehcache 文档即可,jfinal 仅仅是对 ehcache 做了一层极薄的封装

2017-09-03 22:09

这个必然是配置错误,一定要注意,每一个 engine 对象都是独立的,不同场景下使用的 engine 对象是不同的

configEngine(Engine engine) 下配置的 engine 对象对应于 render 方法相关模板使用的 engine 对象

而别的地方配置的则与 configEngine(Engine engine) 中配置的 engine 没有关系,仔细看一下文档

2017-09-03 18:18

此外,永远不要对一个变量用 ?? 运算符,上面的代码直接这样就好:
#if ( sort ), 因为对于一个变量来说,不可能出现取值时的空指异常

只有在多层次取值,或者方法调用时才需要使用 ?? 运算符,象下面就需要:
#if (obj.value ?? ) ,因为 obj 为 null 时会抛出异常

还有一个应用场景是变量为 null 并且需要默认值时,例如:
value ?? defaultValue

2017-09-03 18:15

你的 sort 是 create_date, order 是 asc,这两个东东明显是不能使用问号占位符的,将 #para 指令改成输出指令即可:
#if(sort??)
order by #(sort) #(order)
#end

2017-09-03 18:04

这里面用到了一个 UrlSeoHandler,用于将 /share/123 这样的 url 转化成 /share/detail/123 这样的 url

目的就是为了让详情页面的 url 再简短一点,有利于 SEO,当然这个 SEO 优化也仅仅是 SEO 工作者的一个普遍看法,是不是有用不一定

2017-09-02 15:24

@arboret 没这方面的经验,建议仔细单步调试,看请求是被什么东东拦截的