Jsf 当组件位于内部时,input.setValid(false)不起任何作用<;用户界面:重复>;

Jsf 当组件位于内部时,input.setValid(false)不起任何作用<;用户界面:重复>;,jsf,jsf-2,uirepeat,Jsf,Jsf 2,Uirepeat,我需要将使用ui:repeat生成的inputText字段标记为无效。通过在bean中使用以下代码,我可以对普通输入字段执行此操作: UIComponent root = context.getViewRoot(); UIInput inputFieldObj = obj.findComponent(root, id); inputFieldObj .setValid(false); 但是,当我尝试获取使用ui:repeat生成的组件时,上面的代码是有效的。它没有将文本字段标记为无效 因

我需要将使用ui:repeat生成的inputText字段标记为无效。通过在bean中使用以下代码,我可以对普通输入字段执行此操作:

 UIComponent root = context.getViewRoot();
 UIInput inputFieldObj = obj.findComponent(root, id);
 inputFieldObj .setValid(false);
但是,当我尝试获取使用ui:repeat生成的组件时,上面的代码是有效的。它没有将文本字段标记为无效

因此,对于以下代码,其工作原理如下:

<p:inputText id="txtEmpId12" /> 

但这并不是:

<ui:repeat>
    <p:inputText id="txtEmpId" />   
</ui:repeat>


这是因为在场景中,组件树只包含一个输入<代码>用户界面:重复在渲染阶段渲染输入。作为一种解决方法,您可以使用
c:forEach
。在这种情况下,组件树将包含所有输入。但我不喜欢这种方法。

会发生什么。。为什么我的问题被否决了?我仍然不明白它是如何包含单个输入的。ui的内部属性:重复?当我的列表大小为3时,使用ui:repeat,它将生成3个具有唯一id的输入字段,如id='0:txtEmpId,id='1:txtEmpId,id='2:txtEmpId。那么,它是如何一次输入的呢?我只是想了解。请澄清。请查看此链接: