我正在尝试使用取消按钮重置数据表内的一些输入文本字段。我遇到的问题是,如果我尝试取消它,但有验证错误,它不允许我这样做,因为它首先进行验证,查找和错误,并在它可以重新渲染之前输出错误。
显而易见的解决方案是在按钮上设置“immediate = true”。这摆脱了问题,并允许我取消而无需验证但字段本身未设置为其原始值。这是因为组件本身永远不会从后备bean重新获取数据,因为立即设置为true。
本文对此进行了详细解释:http://wiki.apache.org/myfaces/ClearInputComponents
这篇文章提出了许多解决方案,但它们都不适用于我。
我似乎无法将组件绑定到任何输入字段,因为它们在数据表中,输入字段本身的“绑定”属性不能引用“var”变量。例如,以下“绑定”属性是非法的,并给我一个错误:
< ice:dataTable id =“poolSharesTbl”var =“node”value =“#{poolSharesManager.nodeModel}”...... <冰:柱> < ice:inputText binding =“#{node.inputTextBinding}”...
这可能与'var'只是请求范围有关。
无论如何,有没有人对如何使这项工作有任何想法?
答案 0 :(得分:4)
使用JSF这样做很痛苦。您几乎无法控制验证。您最好的选择是使用JavaScript重置值。这只是在几行(或一个jQuery的oneliner)完成,而不是数百到几百,你会采取这种方式来解决这个jsfish方式。
答案 1 :(得分:0)
无论如何,我最终使用的解决方法只需要大约50行代码,或多或少,手动执行验证并将inputtext值(默认情况下为Strings)转换为Integers。我以前把javascript和JSF(伍德斯托克图书馆)混在一起很糟糕,所以我很害怕把它再次引入环境;)