当表单处于可编辑模式时,需要在primefaces数据表中包含inputTexts。Primefaces dataTable中的InputText不刷新
除了使用immediate =“true”(没有表单验证)的表单清理以外,一切正常。那么primefaces数据表的行为是不可预测的。用新数据填写数据表后,它仍然保存旧值。
短的例子 - 显示h的差异:DataTable,并将号码:dataTable的 - 但它的工作方式相同,只有从例子三个表之一时: test.xhtml
<h:body>
<h:form id="form">
<p:dataTable var="v" value="#{test.list}" id="testTable">
<p:column headerText="Test value">
<p:inputText value="#{v}"/>
</p:column>
</p:dataTable>
<h:dataTable var="v" value="#{test.list}" id="testTable1">
<h:column>
<f:facet name="header">
<h:outputText value="Test value" />
</f:facet>
<p:inputText value="#{v}" />
</h:column>
</h:dataTable>
<p:dataTable var="v" value="#{test.list}" id="testTable2">
<p:column headerText="Test value">
<h:outputText value="#{v}" />
</p:column>
</p:dataTable>
<p:commandButton value="Clear" actionListener="#{test.clear()}" immediate="true" update=":form:testTable :form:testTable1 :form:testTable2"/>
<p:commandButton value="Update" actionListener="#{test.update()}" update=":form:testTable :form:testTable1 :form:testTable2"/>
</h:form>
</h:body>
和java:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@ViewScoped
public class Test implements Serializable {
private static final long serialVersionUID = 1L;
private List<String> list;
@PostConstruct
private void init(){
update();
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public void clear() {
list = new ArrayList<String>();
}
public void update() {
list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
}
}
在上面的例子我有3种配置: 1.号码:dataTable中具有p:inputText的 2. H:dataTable中具有p:0的inputText3.号码:dataTable中与H:的outputText
和2个按钮:首先清除数据,第二数据应用
工作流程:
尝试更改中的p inputTexts数据:dataTable中和h :dataTable的
列表清除数据(字符串的ArrayList) - 点击“清除”按钮(想象一下,你点击取消形式,因为你不想来存储数据到数据库)
加载新的数据 - 点击“更新”按钮(想象一下,你是开扩新数据的新形式)
问: 为什么号码:dataTable中与号码:inputText的还是卖场手动更改数据,不是装载的? 有没有办法强制p:dataTable的行为像h:dataTable在这种情况下?
感谢Luiggi,但正如你说这是不是。我发布了这三个表来显示p:dataTable和h:dataTable的行为差异。但在我的例子中只列出了其中的一个表。 p:dataTable仍然会像我描述的那样工作,因为我不喜欢,而h:dataTable会像我喜欢的那样工作。你能告诉我为什么p:dataTable从bean中清除绑定的空列表(清理后),并且在新列表生成并更新p:dataTable之后,手动更改但不是绑定列表。它会记住在bean清单清理之前手动创建的值。 – robson