Jfinal的renderJson()返回的json有些时间属性只有日期部分。

发布于 2021-12-06 00:24:45 字数 1553 浏览 851 评论 10

数据库中的字段都有时分秒。

表中两个字段类型一样:

action:

	public void login() {
		// 前端传递的对象
		User user = getModel(User.class, "user");
		User db_user = service.login(user);
		if (db_user!=null) {
			getSession().setAttribute("user", db_user);
			System.out.println(db_user);
			renderJson(db_user);
			//setAttr("msg", "登录成功:"+db_user);
			//render("/msg.jsp");
		}else {
			setAttr("msg", "登录失败");
			render("/msg.jsp");
		}
	}

上面system打印的System.out.println(db_user);也都有时分秒

service的login()

@Before(Tx.class)
	public User login(User user) {
		User db_user= User.dao.findFirst("select * from user where account=?", user.getStr("account"));
		if (db_user!=null) {
			if (db_user.getStr("pwd").equals(user.getStr("pwd"))) {
				db_user.set("lastLoginTime", new Date()).update();
				return db_user;
			}else {
				return null;
			}
		}else {
			return null;
		}
	}

上面使用的是:java.util.Date

可是返回的json其中一个字段没有时分秒

很奇怪,不清楚为什么。@JFinal 我已经贴出service的login方法了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

顾忌 2021-12-10 01:52:44

这个问题一直都不存在,就是一个日期输出格式设置问题:
JsonManager.me().setDefaultDatePattern("yyyy-MM-dd HH:mm:ss")

日期型数据只要先确保时分秒确实存在,剩下的就是一个 pattern 配置的事

百思不得你姐 2021-12-10 01:51:26

所以我暂时没有研究jfinal了。实在太忙了

北笙凉宸 2021-12-10 00:27:57

不知道现在jfinal还有没有这个问题,当时有个项目本来想用jfinal的的确感觉很强大,但是遇到这个问题的时候,就不敢用了。不知道现在的新版本还有这个问题没有了

沦落红尘 2021-12-09 23:47:00

遇到同样问题,最开始以为是Jfinal的BUG,但是仔细研究源码后,是因为默认的JFinalJsonFactory返回的JFinalJSon的默认对java.util.Date是只有日期的部分的转换,但是JFinalJson在使用DatePattern时又默认是局部变量为优先,所以在JFinalConfig里面怎么全局设置都不能改变DatePattern的格式。希望作者将DatePattern的赋值方法暴露出来啊

复古式 2021-12-09 20:40:37

debug发现从数据库拿到的createTime的类型是Timestamp,而自己set和update的lastLoginTimed的类型是util.Date更新到数据的时候没问题会自动转为数据库的timestamp,但是程序内存中的lastLoginTimed依然是util.Date

 

尝试直接返回Date()对象,就没有时分秒

 

墨洒年华 2021-12-09 16:39:31

您好直接renderJson(new Date()); 就没有时分秒。

孤独患者 2021-12-09 10:55:01

单步跟踪到 json 转换类里面去,看里面的处理细节,如果找到解决办法回来分享一下,我这里测试都是没有问题的,所以无法重现你的问题

 

此外,建议将 timestamp 改为 datetime,这个类型也是支持时分秒的

小情绪 2021-12-09 06:17:37

目前自己找到的解决办法就是update之后再查一次:

不然直接返回update之后的model会出现没有时分秒。求 @JFinal可以提供一个标准的使用方式

梦中楼上月下 2021-12-08 20:23:02

你好,我设置了一次最后一次登录时间传入 new date() ,难道这样就不带时分秒吗?那我应该传入哪种对象呢?

顾忌 2021-12-06 19:29:36

应该是你的 service.login(user) 这个方法内部对字段值进行过重新调整,因为这个转换是同一套代码,对于同一个数据类型,不可能区别对待

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文