我有这个primefaces索引页面:
<p:layoutUnit position...>
<h:form>
<p:outputLabel for="txt" value="enter 6 digits">
<p:inputMask id="txt" value="#{bean.txt}" mask="999-999">
<p:inputLabel for="date1" value="choose date:">
<p:calendar id="date1" value="#{bean.date1}">
<p:commandButton value="submit" actionListener="#{bean.submit}"/>
</h:form>
</p:layoutUnit>
<p:layoutUnit position ...>
<h:form>
<p:dataTable var="data" value="#{bean.result}">
<p:column headerText="result">
#{data}
</p:column>
</p:dataTable>
</h:form>
</p:layoutUnit>
//类Bean.java // bean是sessionscopped
private String txt;//setter and getter
private Date date1;
private List<String> result;
public List<String> getList()
{return result;}
public void submit()
{
// here the code I get str and add to list using loop
//it's a large code to paste here
result.add(str);
}
单击“提交”按钮时会显示结果,但是当选择另一个日期再次开始时,搜索旧数据会显示在数据表中,并且没有显示问题的新数据! 如果我刷新页面,则显示新结果。
如何解决?
答案 0 :(得分:0)
由于刷新页面后会显示新数据,因此您只需在提交第一个表单后使用primefaces的内置ajax更新<p:dataTable>
。
要做到这一点,只需在包含dataTable的表单中添加一个id(感谢@Kukeltje澄清):
<h:form id="foo">
并在dataTable标签中添加一个id:
<p:dataTable id="beanTable" var="data" value="#{bean.result}">
然后将其添加到commandButton,以选择要更新的组件:
<p:commandButton update=":foo:beanTable" value="submit" actionListener="#{bean.submit}"/>