JFinal

登录 注册

1.Validator默认页面显示有误


UserController.java中

public void login() {
renderTemplate("login.html");
}
@Before(UserValidator.class)
public void doValidator() {
System.out.println("12323");
}


UserValidator.java中

@Override
protected void validate(Controller c) {
validateString("str", 3, 10, "errorMsgKey", "请输入3-10个字符的字符串");
}
@Override
protected void handleError(Controller c) {
c.keepPara("str");
c.renderTemplate("login.html");
}


login.html中

<h1>validator实现</h1>
<form action="/user/doValidator" method="post">
<p>校验字符串<input name="str" value="#(str??'')">#(errorMsgKey??'')</p>
<p><input value="提交" type="submit">
</form>

 

默认页面显示有误如下,怎么不让这些字符内容默认显示呢?

 yemian.jpg

结束页面显示和中间步骤基本正常。

jieshu.jpg




评论

  • 03-11 10:21
    浏览器地址栏值为: localhost/user/login.html,注意是以 ".html" 结尾的,证明根本没走 jfinal,而是直接走的 tomcat 或者 jetty ,因此 jfinal 也就没法干预到
  • 03-11 10:22
    这就相当于,你将 "login.html" 直接放在资源管理器中,然后双击该页面直接用浏览器打开是一个道理,与 java web 完全无关
  • 03-11 11:30
    @JFinal 谢谢,问题已解决
  • 03-11 11:51
    #(str?? "") 与 #(str) 是完全等价的,建议使用后者

    最后,永远不要使用 #(value ??) 这种形式,因为 value 为 null 时不需要双问号运算符,效果是完全一样的

    只有是多级取值或多级方法调用时才需要双问号,例如:
    #(obj.value ??)
    #(obj.method() ??)
  • 发送