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