2019-11-08 20:09

比我给的方案简单方便多了,必须收藏 + 点赞

此外,这个功能已经添加到了 jfinal-undertow,代码在此:
https://gitee.com/jfinal/jfinal-undertow/commit/9f07cfeec48b4695c8e400f022a9dbb80fe6c3b3

2019-11-08 18:19

@happyboy 这么快就搞定了,超赞,这个问题值得分享

2019-11-08 18:18

看上去像是 dependency 中出现了多个版本的 servlet 依赖,注意去除干净

此外, undertow 不支持 JSP,建议使用 jfinal 的 enjoy,谁用谁爽翻:
https://www.jfinal.com/doc/6-1

如果一定要使用 JSP,可以使用 jetty-server:
https://www.jfinal.com/doc/1-6

或者使用传统 java web 的开发方式:
https://www.jfinal.com/doc/1-11

2019-11-08 18:15

@macaque appendIfExists(...) 也可以,但建议使用 PropKit.useFirstFound(...)

这个问题的本质是,config 目录与 jar 包中出现同名配置文件时, jar 包中的优先

解决的时候,让 jar 不要打入配置文件,或者打入 dev 配置,在 config 中添加 pro 配置

2019-11-08 18:13

@macaque appendIfExists(...) 也可以,但建议使用 PropKit.useFirstFound(...)

2019-11-08 18:09

这个问题确实很麻烦,值得改进,谢谢反馈

2019-11-08 17:02

可以通过配置 undertow 实现,这个要去看它的官方文档

这个一般不需要配置,因为用户的 "主请求" 都是 action,而 .jpg 这类 "副请求" 都是客户端通过响应的 html 后续加载的,不会体现在用户的主请求中

2019-11-08 16:53

@6165zyx 服务端只负责发送文件内容,你的这个需求完全是客户端的事,注意配置浏览器的相关选项,有个配置可以开启路径选择,而且这个是默认的

可能是你在某次下载的时候,勾选了一直默认下载到这个目录下面,所以现在下载的时候就不出现对话框了

总之,这个问题肯定是与服务端无关的

2019-11-08 16:51

@网友 jfinal 并未提供 webservice 功能,而你的项目中用到了 webservice,想必你是通过整合了某个 webservice 第三方

因此,只需要针对这个第三方,看看它的文档,找到 sun-jaxws.xml 即可

2019-11-08 16:49

@kevinzhaoyp 稍微看一下文档就会用了,sql 模板只提供了 #para、#sql、#namespace 三个指令,可以搞定大部分问题

需要其它功能的时候,可以直接使用 enjoy 已有的功能,因为 sql 模板是 enjoy 引擎实现的,用上文档中介绍的 enjoy 用法即可:
https://www.jfinal.com/doc/6-1

注意文档中强调的:
立即掌握 90% 的用法,只需要记住一句话:JFinal 模板引擎表达式与 Java 是直接打通的

2019-11-08 15:35

参考一下这个:
https://www.jfinal.com/share/877
https://www.jfinal.com/share/257

2019-11-08 15:34

@青山楼外楼 再细心一点,单步调试进入方法内部,看看生成的 sql 与参数对不对

2019-11-08 15:33

jar 包内部存在同名配置文件,那么 config 下面的则不会加载,这是一个优先级问题

在打包的配置中,配置一下过滤,避免将配置文件打入 jar 包

如果是 jfinal undertow 的配置文件,还可以通过 -dev、-pro 结尾字符串来实现你的需求,让 jar 包打入 -dev 配置,让 config 中放 -pro 配置,例如:
1: jar 包中打入 undertow.txt
2:config 目录放入 undertow-pro.txt
这样的话 config 目录的就会被加载

如果是 jfinal 自身的配置文件,可以在 MyConfig 中这么来用:
public class MyConfig extends JFinalConfig {
private Prop p;

public void configConstant(Constants me) {
this.p = PropKit.useFirstFound("jfinal-club-config-pro.txt", "jfinal-club-config-dev.txt");

me.setDevMode(p.getBoolean("devMode"));
}

public void configEngine(Engine me) {
me.setDevMode(p.getBoolean("engineDevMode");
}

上面的代码 PropKit.useFirstFound(first, second) 会优先年 first 配置,找到则使用,找不到则继承找 second 配置

而你就可以利用这个 PropKit.useFirstFound(...) 机制,将 second 打入 jar 包, 让 first 配置放入 config 目录

这种用法在 jfinal club 中有,注意看源码:
JFinalClubConfig

2019-11-08 15:27

@scocai 不加引号就当成数值类型处理了,如果在 long 值的范围内,并且超出 int 的范围,可以添加字符 ‘L’ 结尾,例如:
set(id, 112406187943849984L);

2019-11-08 15:25

这个代码貌似与 jfinal 无关,而且代码里头并未表达出什么特别的意思,仅仅只是几个简单的方法调用而已,也没有复杂的逻辑