首页 文章

在JSF中更新和呈现标记

提问于
浏览
0

我正在尝试使用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但删除我拥有的任何表单输入 . 有没有办法在不清除表单值的情况下呈现数据表?

更新:刚尝试相同的代码没有和使用但得到相同的结果,仍尝试其他方法!

2 回答

  • 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>
    

    如果这不起作用,请尝试将数据表放在单独的表单中并更新第二个表单 .

  • 0

    我猜测AdminBean可能在请求范围内,在这种情况下,您的ajax事件将更新它,但是当您按F5时它会被重新创建 . 如果是这样,那么ViewScoped将有所帮助:

    @ManagedBean(name = "adminBean")
    @ViewScoped
    public class AdminBean {
    
    }
    

相关问题