【发布时间】:2013-09-05 12:09:21
【问题描述】:
我有一个文本框和值更改侦听器。并且有一个保存按钮。用户通过直接编辑 html 代码中的文本框值来避免/绕过值更改侦听器,然后将其保存。我怎样才能禁止用户,使他/她不能以这种方式改变价值?从而确保始终调用值更改侦听器。
我正在寻找一些通用机制来阻止所有输入/和事件侦听器上的此类情况。
谢谢
【问题讨论】:
我有一个文本框和值更改侦听器。并且有一个保存按钮。用户通过直接编辑 html 代码中的文本框值来避免/绕过值更改侦听器,然后将其保存。我怎样才能禁止用户,使他/她不能以这种方式改变价值?从而确保始终调用值更改侦听器。
我正在寻找一些通用机制来阻止所有输入/和事件侦听器上的此类情况。
谢谢
【问题讨论】:
您需要接受用户实际上可以用他的客户端(浏览器)做他想做的一切。他可以禁用 Javascript、完全删除输入、更改验证或手动调用 Ajax 功能。他甚至可能不会使用浏览器并使用命令行工具发送 HTTP 请求。
要禁止这样的事情是不可能的。
另一方面,我认为如果您在h:inputText 上使用valueChangeListener,那么无论如何都应该调用它,因为它将在服务器端进行评估。可能是您以错误的方式编辑它,并且当您保存表单的内容时该值实际上并没有改变。 (通过向您的设置器添加断点来检查该值是否真的被设置)。
如果您通过<f:ajax> 与event="change" 和listener 一起使用Ajax 功能,则无法通过手动编辑html 来防止绕过它。在您的保存方法中检查更改的值,或者改用valueChangeListener。
【讨论】: