我正在尝试使用primefaces中的更新标记显示/不显示primefaces数据表。
当我重新加载(F5)页面时,表格将正确呈现,但之后我将丢失已归入表单的所有数据。我正在寻找一个ajax解决方案,但到目前为止我一直找不到。
我的代码:
<h:form id="adminForm">
<h:selectOneMenu id="adminTypeMenu" value="#{adminBean.orgType}">
<f:selectItem itemValue="" itemLabel="- Select One -"/>
<p:ajax actionListener="#{adminBean.updateOrgType}" update="adminForm" />
</h:selectOneMenu>
<p:dataTable id="adminMacTable" value="#{adminBean.currentArray}" var="currentOrg"
rendered="#{adminBean.Type eq 'bco'}" selection="#{adminBean.selectedMac}"
emptyMessage="No Records Found">
...
</p:dataTable>
</h:form>
当前实现显示dataTable但删除了我的任何表单输入。有没有办法在不清除表单值的情况下呈现数据表?
更新:刚试过相同的代码没有使用但得到了相同的结果,还在尝试其他方法!
答案 0 :(得分:0)
我猜测AdminBean可能处于请求范围内,在这种情况下,您的ajax事件将更新它,但是当您按F5时会重新创建它。如果是这样,ViewScoped将提供帮助:
@ManagedBean(name = "adminBean")
@ViewScoped
public class AdminBean {
}
答案 1 :(得分:0)
试试这个:
<h:form id="adminForm" prependId="false">
<h:selectOneMenu id="adminTypeMenu" value="#{adminBean.orgType}">
<f:selectItem itemValue="" itemLabel="- Select One -"/>
<p:ajax actionListener="#{adminBean.updateOrgType}" update="adminMacOutput" />
</h:selectOneMenu>
<p:outputPanel id="adminMacOutput">
<p:dataTable id="adminMacTable" value="#{adminBean.currentArray}" var="currentOrg"
rendered="#{adminBean.Type eq 'bco'}" selection="#{adminBean.selectedMac}"
emptyMessage="No Records Found">
...
</p:dataTable>
</p:outputPanel>
</h:form>
如果这不起作用,请尝试将数据表放在单独的表单中并更新第二个表单。