用户在JSF SelectOne菜单中操纵合法值

用户在JSF SelectOne菜单中操纵合法值,jsf,ajax4jsf,Jsf,Ajax4jsf,技术:JavaEE6、JSF1.1、ajax4jsf 我向用户表示一个selectOneMenu(下拉列表),其中预先填充了用户可以提交的所有合法值。假设是datevalues: 01.01.2010 2011年1月1日 2012年1月1日 下拉列表中的选定值绑定到支持对象(form.chosenDate)上的属性,列表中的值从支持对象(form.selectableDates)上的列表中检索。当用户选择不同的值时,form.chosenDate将使用a4j更新 问题是,用户是否可以使用列表中填

技术:JavaEE6、JSF1.1、ajax4jsf

我向用户表示一个selectOneMenu(下拉列表),其中预先填充了用户可以提交的所有合法值。假设是datevalues:

  • 01.01.2010
  • 2011年1月1日
  • 2012年1月1日
  • 下拉列表中的选定值绑定到支持对象(form.chosenDate)上的属性,列表中的值从支持对象(form.selectableDates)上的列表中检索。当用户选择不同的值时,form.chosenDate将使用a4j更新

    问题是,用户是否可以使用列表中填充的值(form.selectableDates中的值)以外的其他值提交表单?如果是这样的话,如何做到这一点?在GoogleChrome的开发工具中,我可以操作html并更改“runtime”的值,但是当我提交时,下拉列表将用原始值刷新,我必须再次提交。这是谷歌浏览器还是JSF强制执行的


    这个问题也适用于单选按钮。请开导我

    是的,用户可以提交一个不在下拉列表中的值。例如,Firefox的篡改数据插件可以做到这一点。但是,它将无法通过JSF验证,因为提交的值将对照列表进行检查,以查看是否包含在其中。用户将收到一条“表单:位置:验证错误:值无效”错误消息。

    谢谢您提供的信息!这很有道理。我想这在大多数web框架(SpringMVC、play、wicket等)中是非常常见的行为?