【发布时间】:2013-07-28 13:59:33
【问题描述】:
我对表单输入字段使用 html 编码。我有一个创建新用户对象的表单,可以在其中插入新用户的名称。为了防止此输入字段被脚本注入,我在下面列出的 save() 操作中执行 encodeAsHTML()。
问题: 1.输入的名称是:Schäfchen 2.在我下面的验证规则之后,这将被正确验证 3. html encoding将ä转换为\auml,验证失败
如何实现正确验证 html 编码的名称?
给定以下 Grails 类:
class User {
String name
static constraints = {
name blank: false, validator: { val, obj ->
Pattern pattern = Pattern.compile("[a-zA-Z0-9äöüßÄÖÜ\\- ]+")
pattern.matcher(val).matches()
}
}
}
在我的 UserController.groovy 中:
dev save() {
def name = params?.name?.encodeAsHTML()
def user = new User()
user.name = name
user.save()
}
【问题讨论】:
-
为什么在域中将数据编码为html?在页面上显示时,您可以始终/应该将其编码为 html。
-
你能给出一些示例代码吗?什么时候使用 encodeAsHTML() 什么时候使用 decodeHTML() ?
标签: grails grails-2.0 grails-domain-class