<p:dataTable value=”#{myBean.myList}” var=”item”>
<h:outputText id=”mytext” value=”#{item.valueText}”/>
</p:dataTable>
//Item class
Class Item
{
String valueText;
Item(String valueText)
{
this.valueText = valueText;
}
}
//myList has 5 elements.
Item(“red”);
Item(“orange”);
Item(“yellow”);
Item(“green”);
Item(“blue”);`
//Button
<p:commandButton value=’submit’ actionListener=”#{myBean.checkColor}” update=”myText”/>` // This will update all the five texts.
//MyBean Class
Class MyBean
{
List<Item> myList;
public void checkColor()
{
Iterator itr = myList.iterator();
while(itr.hasNext())
{
Item item = itr.getNext();
if(item.getValueText().contains(‘r’))
{
item.setValueText(“Invalid Color”);
}
}
}
}
上述代码将在点击按钮时对所有5个文本执行更新,但它只会更改包含字母&#39; r&#39;所以剩下两个更新只是浪费。 但我想只更新有字母&#39; r&#39;在他们的“无效的颜色”#。我怎么能这样做?
答案 0 :(得分:0)
您可以尝试在方法myBean.checkColor
中更新bean中的组件。为此,您需要使用以下结构:
RequestContext.getCurrentInstance().update("updatable_component_id");
在您的代码中,它应该如下所示:
class MyBean {
private List<Item> myList;
public void checkColor() {
Iterator itr = myList.iterator();
While(itr.hasNext()) {
Item item = itr.getNext();
If(item.getValueText().contains("r")) {
Item.setValueText("Invalid Color");
RequestContext.getCurrentInstance().update("updatable_component_id");
}
}
}
}