2024-06-13 18:10

输入“日期”,查询结果中没有“日期”的会被查出来, 这个可能是分词器将 "日"、"期" 也进行了分词

尝试配置停用词过滤器,例如:
"filter": {
"stopwords_filter": {
"type": "stop",
"stopwords": ["日", "期", "不想", "匹配", "的", "单字"] // 添加不想匹配的单字或词
}
}

2024-05-30 20:05

@天晴 加到新项目 aifei 中去

2024-04-25 13:21

你上面的代码应该已经对了,可以考虑在一个全局拦截器中判断,没启动时在拦截器中启动它

2024-04-21 18:41

参考一下这几篇分享:
https://jfinal.com/share/15
https://jfinal.com/share/37
https://jfinal.com/feedback/3527

其实直接在 jfinal 中引入 quartz 即可,不一定要使用 plugin 整合

在 JFinalConfig 继承类的配置中初始化一下它

2024-04-20 20:32

配置一个全局拦截器,统一处理异常,这个异常也不一定是事务内抛出的异常

总归要这么一个全局拦截器进行兜底

2024-04-20 14:50

没有异常信息,不好判断,根据异常信息仔细判断一下

此外,建议升级到最高版本

2024-04-08 17:09

俱乐部功能跟文档功能是一样的,复制后改一改就可以

2024-04-04 13:21

谢谢你这么多年对俱乐部的支持,希望 jfinal 及其后续作品能持续不断为你提供价值

2024-04-04 13:15

下载的 jfinal-blog,不用修改,已经是改好的

注意,这里只改 MAIN_CLASS = ..., 而不用改 if 语句中的 class

2024-04-03 16:47

正在开发的 aifei 框架, Record 已更名为 Row

2024-02-28 19:47

非常好的建议,正在开发中的 aife 框架中的取代 jfinal activerecord 的数据库模块有这个功能,方法名为: findByField(......)

2024-02-17 03:01

login action 中验证方式:

@Clear
public void login(String username, String password) {
if (!validateCaptcha("verificationCode") && !CaptchaRender.validate(get("captchaKey"), get("verificationCode"))) {
renderJson(Ret.fail("验证码不正确,请重新输入"));
return;
}
..... 具体登录代码在此
}

2024-02-17 02:59

然后在 controller 中这么使用:

private void captcha() {
try {
String uuid = StrKit.getRandomUUID();
JsonCaptchaRender render = new JsonCaptchaRender(uuid);
Kv data = Kv.of("captchaKey", uuid);
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
ImageIO.write(render.getImage(), "jpg", os);
data.set("img", Base64.encode(os.toByteArray()));
renderJson(Ret.data(data));
} catch (IOException e) {
renderJson(Ret.fail(e.getMessage()));
}
}

2024-02-17 02:54

先写一个 JsonCaptchaRender.java,代码如下:

import com.jfinal.captcha.Captcha;
import com.jfinal.captcha.CaptchaManager;
import com.jfinal.captcha.CaptchaRender;
import com.jfinal.kit.StrKit;

import java.awt.image.BufferedImage;

public class JsonCaptchaRender extends CaptchaRender {

private final String captchaKey;
private String code;
BufferedImage image;

public BufferedImage getImage() {
return image;
}

public void setImage(BufferedImage image) {
this.image = image;
}

public String getCaptchaKey() {
return captchaKey;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public JsonCaptchaRender(String captchaKey) {
if (StrKit.isBlank(captchaKey)) {
throw new StockException("验证码参数 captchaKey 不能为空");
}
this.captchaKey = captchaKey;
Captcha captcha = createCaptcha();
CaptchaManager.me().getCaptchaCache().put(captcha);
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
String code = captcha.getValue();
this.setCode(code);
drawGraphic(code, image);
this.setImage(image);
}

/**
* 使用前端传入 captchaKey
*/
@Override
protected Captcha createCaptcha() {
return new Captcha(this.captchaKey, getRandomString(), Captcha.DEFAULT_EXPIRE_TIME);
}

/**
* 生成验证码
*/
@Override
public void render() {

}
}