html 页面#(x.userName)取值,直接打出来了这个字符串,怎么回事

项目架构:

image.png

CONTROLLER:

()
login() {
    Record record = .login(getPara(), getPara());
    System..println(record);
    (record == ) {

    } {
       setAttr(, record);
        redirect();

    }
}

前台:

image.png


效果:

image.png


求解啊!!!!

评论区

JFinal

2018-08-30 21:18

看一下是使用的是 jfinal 哪个版本,#(x.userName) 是 jfinal 3.0 以后才有的功能

此外,看一下是不是配置了 me.setViewType(...) 要去掉这个配置

JFinal

2018-08-30 21:18

下载首页的 jfinal demo for maven 这个项目,看里面怎么用的,一看就会

房上的猫

2018-08-31 08:30

使用的是3.4的版本,并且有没有设置视图类型啊,
@JFinal

JFinal

2018-08-31 09:05

@房上的猫 莫非你是直接在浏览器请求的 html, 根本没走 render

房上的猫

2018-08-31 09:13

代码片段:

@ActionKey("/login")
public void login() {
Record record = userService.login(getPara("userName"), getPara("password"));
System.out.println(record);
if (record == null) {
renderText("登陆失败");
} else {
setSessionAttr("x", record);
// setAttr("x", record);
//getResponse().sendRedirect("/UsersDemo-JFinal/index.html");
redirect("/index.html");


}
}
@JFinal

JFinal

2018-08-31 10:10

上面代码中的 redirect("/index.html"); 写错了,应该写成 render(...)

不能写成 redirect

房上的猫

2018-08-31 10:13

@JFinal 那我用户信息要是存在session,然后重定向取值呢?render是转发url不会改变吧

JFinal

2018-08-31 14:42

@房上的猫 重定向时不要直接定向到 html 文件,而是定向到一个 action,例如你先创建一个 action :
public void index() {
render("index.html");
}

然后定向时直接定向到上面那个 action ,假定上个 action 的路由是 "/",则代码为:
redirect("/");

原因与前面的是类似的,希望 jfinal 对 html 进行渲染,就一定要走模板引擎,也就是在 action 中走一个 render 方法,而 redirect 方法是可以直接定向到 html 文件的,这样就没走 render

热门反馈

扫码入社