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