更改任何输入值并再次提交时,不会显示任何新数据以显示需要刷新

时间:2017-07-25 09:55:54

标签: jsf primefaces

我有这个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);
}

单击“提交”按钮时会显示结果,但是当选择另一个日期再次开始时,搜索旧数据会显示在数据表中,并且没有显示问题的新数据! 如果我刷新页面,则显示新结果。

如何解决?

1 个答案:

答案 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}"/>