Jsf:验证后重置inputText值IN数据表

时间:2016-02-22 16:27:10

标签: jsf primefaces

我的页面中有p:dataTable。当我指定另一个inputText字段中的项目数时,将为某些创建的项目生成指定的行数。如果我增加项目数,则添加更多行,如果减少,则减去行。如果我将0指定为项目数,则删除所有行并清除模型。现在,dataTable行中的inputText组件通过转换器进行了一些验证。如果该验证失败并且我将项目数设置为0,然后设置为大于0,则生成的行inputText字段在验证失败时具有缓存值,即使模型是新创建的。

验证失败后,据我所知,EditableValueHolder组件值缓存在其value字段中。因此,对于常规字段,要清除组件的值,我需要调用

((EditableValueHolder) component).setValue(null); 
((EditableValueHolder) component).setValid(true); 

这很好用。但是,当inputText在数据表中时,这不起作用。我已将数据表组件绑定到我的bean,并尝试从datatable组件访问inputTexts,然后清除它们。似乎我无法访问它们,datatable组件具有通用子列的列,它不对应于不同的数据表行。有没有办法以编程方式访问不同行中使用的数据表输入组件?我顺便使用primefaces。然后我尝试通过指定

将特定的inputText组件绑定到我的bean
<p:dataTable>
    <p:column>
        <h:inputText binding=#{myBean.component}/> 
    </p:column>
</p:dataTable>

属性只是为了查看我是否可以从其缓存值中清除至少一个inputText。但是,当我访问组件时,它的值和submittedValue字段已经为空。但是,在页面重新呈现时,datatable inputText组件显示验证失败时设置的旧值。顺便说一下,验证由转换器完成。任何有关如何清除缓存值的帮助都将不胜感激。

0 个答案:

没有答案