2020-10-30 11:20

Tx 拦截器是靠异常感知并提交/回滚事务的,所以 serice 内部不能吃掉异常

一般有下面几个办法:
1:使用Db.tx 做事务
Db.tx( () -> {
数据库操作在此
});

2:业务层向外再抛出异常

2020-10-29 16:31

需要添加一行配置:
SqlReporter.setLog(true);

这样就可以写到日志文件了,注意看源码:
SqlReporter.java

2020-10-29 16:27

MetaBuilder.filter(...) 这个方法还可以很方便实现少量指定 table 需生成,大量 table 需跳过的场景

2020-10-29 16:27

MetaBuilder.filter(...) 方法是控制 table 生成的最好办法,除了使用 startsWith 还可以使用正则表达式,还可以使用 HashSet.contains(...) 来控制

随心所欲

2020-10-29 16:24

视频播放要使用特定的 html 标签,播放很慢应该是网速的原因

你先在本地测试一下播放速度看看

此外,建议将相关 html 贴到本文之中,这样能更快解决问题

2020-10-29 16:19

@zgysc 分享的代码量很少,很赞

setUrlParaSeparator 不能使用字符 '#',因为这个字符在 url 中有别的用途,在 url 中叫做锚

2020-10-29 12:36

这里有些知识点,需要了解: urlPara、queryString

2020-10-29 12:35

@谢 请求 URL 为 /admin/bus/new/listJson,这里头没有传递 urlPara,所以肯定是空

NewController.listJson() 这个方法没有形参,所以 inv.getArgs() 也必定是空的

而你的参数也不是问号挂参,所以 getQuerString() 也必定是空的

从控制台的输出来看,你传递的参数需要通过 get("status)、get("page) 等方法获取

当然,你可能不希望这么来获取,因为无法动态化,所以你可以通过继承 CacheInterceptor, 覆盖一下 buildCacheKey() 方法,使用类似下面的办法得到动态的参数:
Map paraMap = controller.getParaMap();

然后将上面的 paraMap 转换成 cacheKey , return cacheKey 即可

2020-10-29 12:29

@zgysc 扩展 Render 实现代理也是很方便的,记得在分享频道分享出来啊

2020-10-29 11:40

上面的代码给出了一些调用的结果,你具体的需求是什么?修改原文补充一下

2020-10-29 10:31

@北流家园网 这个是不能随便上传的,首先要是俱乐部的会员,然后是要严格审核的,甚至连立项都被严格控制,不是什么类型都能上的

2020-10-29 10:30

@HAIV MuYunRoutes 中的 setBaseViewPath 这个只影响 render(...) 时的模板路径

模板内的资源路径,如 #include(...) #render(...) 都与上面的配置无关

模板内的资源路径需要的配置如下:
public void configEngine(Engine engine) {
engine.setBaseTemplatePath( PathKit.getWebRootPath() + "/muyun");
}

注意上面代码中有一个 PathKit.getWebRootPath() ,这个是绝对不能缺少的,否则是找不到资源的

2020-10-28 22:33

这个直接在 controller 中就可以使用,可以接管 jfinal 的 getFile() 对于个性化场景很有用,谢谢分享

2020-10-28 22:04

forward 是指应用程序之内的动作,你想要的动作应该是 redirect

但是你可能不希望客户直接访问 B 的 /downfile,一般要使用代理,也就是服务器 A 作为中转,与服务器 B 交互,将数据再转递给客户端,这个模式比较麻烦

我建议使用 jfinal 社区视频文件下载的方案,在这里有介绍:
https://jfinal.com/app/3