在 JSF 中更新和呈现标签

发布于 2024-11-08 14:45:46 字数 813 浏览 1 评论 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>

当前实现显示数据表,但删除我拥有的任何表单输入。有没有办法在不清除表单值的情况下呈现数据表?

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

I'm trying to display/not display a primefaces datatable using the update tag in primefaces.

The table will render correctly when I reload (F5) the page but then I will lose all the data I had imputed into the form. I was looking around for an ajax solution but I have been unable to find any so far.

My code:

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

The Currently implementation displays the dataTable but erases any form inputs I had. Is there a way to render the datatable without clearing out my form values?

Update: Just tried the same code without and used but got the same result, still trying other methods!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

被翻牌 2024-11-15 14:45:46

试试这个:

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

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

Try this:

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

If that doesn't work, try putting the datatable inside a separate form and update this second form.

滥情空心 2024-11-15 14:45:46

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

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

}

I'm guessing that AdminBean might be in request scope in which case your ajax event will update it but then it gets recreated when you press F5. If so then ViewScoped will help:

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文