2019-11-08 14:55

@简单代码 jfinal club 中的 JsoupFilter.java 已经解决过了,参考 jfinal club 中对于 JsoupFilter 的使用方法

简单来说就是按一定规则将恶意部分过滤掉

2019-11-08 14:52

应该是 shiro 配置的问题,异常提示:
Caused by: java.lang.IllegalArgumentException: argument type mismatch

参数类型不匹配

2019-11-08 14:50

@smileForLife 使用 return 返回模板需要用拦截器稍做点扩展,例如:
public MyInterceptor implements Interceptor {
public void intercept(Invocation inv) {
inv.invoke();
Object ret = int.getReturnValue();
if (ret instantceof String) {
inv.getController().render(ret.toString());
}
}
}

然后将这个拦截器配置为全局拦截器:
public void configInterceptor(Interceptors me) {
me.add(new MyInterceptor());
}

2019-11-08 13:49

注意对比 ArpTest1 与 ArpTest2 的 addMapping(...)
ArpTest1.addMapping("BAS_BRAND", "BRAND_CODE", BasBrand.class);
ArpTest2.addMapping("BAS_BRAND", "BRAND_CODE", BasBrand.class);

这两个 addMapping 映射了同一个 BasBrand.class,所以就会有这个异常

Model 在一个应用中是全局唯一的,多数据源的时候也只能映射一次,以前老版本虽然没做限制,但最终只有最后一次映射有效,前一次映射会被覆盖

2019-11-08 13:44

此外,switch 语句貌似差了一句 break;

2019-11-08 13:44

@leomj 使用 jfinal 的 Render 扩展出各种格式的响应数据极度便利,比扩展 spring 的 ViewResolver 简单 32 倍

享主的分享简单实用,必须赞

2019-11-08 13:31

这么用心、详细的贴子,必须顶

2019-11-08 12:18

此外, HttpKit.readData(this.getRequest()) 这行代码建议改成:
getRawDatra();

2019-11-08 12:18

返回 405 异常,证明拦截器中走了 if 的 else 分支,那么证明你客户端发送的并不是 POST 请求,调整一下客户端代码即可

2019-11-07 17:22

你这个需求可以通过 undertow 的反向代理来解决,这里是 undertow 官方给出一例子代码:
https://github.com/undertow-io/undertow/blob/master/examples/src/main/java/io/undertow/examples/reverseproxy/ReverseProxyServer.java

ReverseProxyServer.java 这个例子中,注意看第 78 行以及 84 行的代码:
LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient();
Undertow reverseProxy = Undertow.builder();

其中 loadBalancer 可以用于配置成接管你自己的项目,其中 reverseProxy 是反向代理

学会了这个用法以后,再参考 jfinal 官网的文档将 jfinal 项目整合进去:
https://www.jfinal.com/doc/1-4

undertow 整合组件无非就是添加 Handler 之类的东东

2019-11-07 16:59

注意看 jfinal 4.7 的 TableMapping.java 代码的第 38 行:
https://gitee.com/jfinal/jfinal/blob/jfinal-4.7/src/main/java/com/jfinal/plugin/activerecord/TableMapping.java

第 38 行的 if 判断在 4.5 版本之中的确是没有的:
https://gitee.com/jfinal/jfinal/blob/jfinal-4.5/src/main/java/com/jfinal/plugin/activerecord/TableMapping.java

这个判断其实是为了让你的代码更加稳固而添加的,因为 Model 只能被映射一次,而你自己的项目中将 BasBrand 映射了多次,这个在 jfinal 4.5 中虽然没有提示错误,但仅仅是最后一次映射有效

检查一下各个数据源的 mapping 代码,去掉那个重复的 BasBrand 映射即可,只保留一个

2019-11-07 16:52

renderToString 方法会将数据与模板结合并渲染成 String 字符串,所以得到的值一定是 String

如果希望实现你的功能,可以参考一下 com.jfinal.kit.ElKit.java 中的代码,可以这么来用:
1:不带参示例
Integer value = ElKit.eval("1 + 2 * 3");

2:带参示例
Kv data = Kv.by("a", 2).set("b", 3);
Integer value = ElKit.eval("1 + a * b", data);

具体的思路是将求值结果存放在一个叫 RETURN_VALUE_KEY 的变量之中,最后再通过 data.get(RETURN_VALUE_KEY) 获取该值

2019-11-07 15:33

@一个程序员 做成双向认证只需要在这个代码里头添加一点点东西:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/ssl/SslBuilder.java

也就是下面这行代码中:
sslContext.init(getKeyManagers(sslConfig), null, null);
第二个参数的 null 改为 TrustManager 即可,而这个 TrustManager 的密钥库的加载方式与之 keyManager 的完全一样,可以重用 loadKeyStore 方法进行加载

你的贴子正文一开始并没有提出详细的需求,建议你将你的方案简单发个分享出来:
http://jfinal.com/share

2019-11-06 22:57

配置 undertow.hotSwapClass ,文档中有说明

2019-11-05 18:44

高版本的 jfinal 解决过