网页console提示如下错误:Uncaught (in promise) TypeError: d.getPageInfo(...).then …………

有没有哪位大神碰到过类似的问题?

如何解决?

blob.png

拦截器:

@Override
	public void intercept(Invocation inv) {
		Controller c = inv.getController();
		HttpSession hs = c.getSession(false);
		if(XX.isEmpty(hs) || XX.isEmpty(c.getSessionAttr("user"))){
			c.redirect("/login/view");
			return;
		}
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date overdue = null;
		try {
			overdue = sdf.parse(c.getSessionAttr("overdue"));
		} catch (ParseException e) {
			e.printStackTrace();
			ErrRender.auto(c, 401);
			return;
		}
		if(overdue.getTime() < now.getTime()){
			if(XX.isAjax(inv.getController().getRequest())){
				String msg = "登录超时,请重新登录!";
				if(XX.isJsonRender(inv.getController().getRequest())){
					c.renderJson(Kv.by("errCode", 1).set("msg", msg));
				}else{
					c.setAttr("msg", msg);
					c.render("/jfast/login/loginError.html");
				}
			}else{
				c.redirect("/login/view");
			}
			return;
		}else{
			Long interval = c.getSessionAttr("interval");
			Long endTime = now.getTime() + interval*1000;
			String res = sdf.format(endTime);
			c.setSessionAttr("overdue", res);
		}
		inv.invoke();
	}

登录控制器:

public class LoginController extends Controller{
	private String userName = "";
	private String userPwd = "";
	private JfastUser user = new JfastUser();
	private String login_time = "";//登录时间:yyyy-MM-dd HH:mm:ss
	public SqlPara sqlPara = new SqlPara();
	
	/**
	 * 登录页
	 */
	@Clear(LoginGlobeInterceptor.class)
	public void view(){
		render("/jfast/login/login.html");
	}
	
	……
}

360截图20170829214027700.jpg

360截图20170829215411799.jpg

查了半天,才发现,原来是360浏览器的“阅读模式”这个插件搞的鬼!!!,禁用就行了!(禁用后可以再次开启。)

郁闷!

评论区

JFinal

2017-08-29 19:50

这个是什么异常,从没见过

麻言

2017-08-29 20:29

@JFinal ta真实地出现了:我设置了登录拦截器,未登录或登录超时,则controller.redirect("/login/view"),然后我写了这个登录类和view方法,无论这个方法返回的是什么样的模板(即使内容为空),也出现这个提示,而且依次出现多个

麻言

2017-08-29 20:32

@JFinal 还有一点很奇怪:360浏览器有这个提示,搜狗浏览器、chrome等没有

JFinal

2017-08-29 21:10

@麻言 出现在什么地方的?

麻言

2017-08-29 21:14

@JFinal 出现在Console面板

麻言

2017-08-29 21:20

@JFinal 为了说明清楚,正文上传了截图

麻言

2017-08-29 21:38

@JFinal 有新发现:如果不是跳转redirect(…),而是直接渲染模板render("/jfast/login/login.html"),则不会出现那个提示;但是,这仅仅是在原URI为“/”时成立。例如,URI为“/goTo/jfast_menu”,则仍然出现这个提示。同时,发现任意一个未定义的URI(如:“/5566”)也能跳转到登录页,显示此提示。

JFinal

2017-08-29 21:39

这个是纯 javascript 的问题,与 jfinal 毫无关系了

异常提示 content.js 第 5 行代码写错了

JFinal

2017-08-29 21:41

@麻言 jfinal 在后端,只是向浏览器发送渲染完成的 html 或者 json 数据,而 js 文件的内容是由 tomcat / jetty 这类容器发送给浏览器的,jfinal 并没有参与 js 文件的发送

麻言

2017-08-29 21:44

@JFinal 怪就怪在,我尝试将模板内容清空,即没有引用任何js文件,不知道这个content.js从哪里冒出来的。

麻言

2017-08-29 21:46

@JFinal 我也怀疑是前端的问题,百度都查了,也没有搜到有价值的解释。崩溃中……

JFinal

2017-08-29 21:47

@麻言 按一下 F5,重新发起次请求,看这个 content.js 是哪个请求获取的,注意是不是从别一个 js 里面发起的,把这个 content.js 干掉,整个世界就清静了

JFinal

2017-08-29 21:50

特别提醒一下,浏览器自身渲染一个没有打开任何 url 的空白标签窗口时,仍然会加载 js 文件,例如 chrome 浏览器会默认加载以下三个 js:
config.js
local-ntp.js
single.js

这三个 js 由两个 html 加载,而这两个 html 并不需要打开任何 url

麻言

2017-08-29 21:53

@JFinal 多谢提醒!!!,已发问题,我上传发现的截图吧

q329914@163.com

2017-08-29 22:17

content.js有可能是浏览器扩展的js

JFinal

2017-08-30 17:50

@麻言 所以,有几乎超过 50% 的问题是与 jfinal 毫无关系的,尤其是前端的问题

吃桃子的松鼠

2017-08-30 18:02

@JFinal 詹总, 数据库查询的时候有一条记录,报Only ONE COLUMN can be queried 只能查一列? 什么意思?

JFinal

2017-08-30 18:36

@吃桃子的松鼠 就是说 queryInt、queryColumn、queryLong 这类返回 int 、long 返回值的 sql 中的 select 只能是一个字段例如:
Db.queryInt("select count(*) from xxx"),而不能是
Db.queryInt("select count(id), title from xxx")
这种返回多个字段的 sql 显然无法使用 int、long 去接收值

麻言

2017-08-31 11:45

热门反馈

扫码入社