【问题标题】:Primefaces Datatable recreate viewScoped beanPrimefaces Datatable 重新创建 viewScoped bean
【发布时间】:2013-05-21 08:45:13
【问题描述】:

我有一个包含 5 列的数据表。第一列包含:

<p:column headerText="Ordine" filterBy="#{item.numeroOrdineLavoro}"
          sortBy="#{item.numeroOrdineLavoro}">

    <p:commandLink value="#{item.numeroOrdineLavoro}"
                   process="@this"
                   action="#{Bean_OrdiniLavoro.cmdSeleziona_Ordine}">

        <f:setPropertyActionListener target="#{Bean_OrdiniLavoro.sel_OrdineLavoro}" 
                                     value="#{item}" />
    </p:commandLink>
</p:column>

Bean_OrdiniLavoro 是 ViewScoped。 Bean_OrdiniLavoro.cmdSeleziona_Ordine 在新页面中重定向。

每次我单击命令链接 Bean_OrdiniLavoro 都会重新创建。这就是问题所在。

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

Primefaces 3.5 和 JSF 2.1.22。

我读过很多帖子说 PARTIAL_STATE_SAVING = false 就足够了 但在这种情况下,它不起作用。

如果我使用 a 而不是它的工作原理。

非常感谢。 大卫

【问题讨论】:

  • 这个函数返回什么:Bean_OrdiniLavoro.cmdSeleziona_Ordine?
  • 如果我使用“Page_EditOrdine.xhtml?faces-redirect=true”它会重新创建 Bean。使用 return = null 和 //FacesContext.getCurrentInstance().getExternalContext().redirect("Page_EditOrdine.xhtml");它有效
  • 解决了你的问题?
  • 是的,但我不知道为什么 :-)

标签: jsf-2 primefaces view-scope


【解决方案1】:

当使用 p:commandButtonaction 属性时,返回值是您要导航的位置。如果您返回一个非空值,您当前的视图将终止以支持新的视图。

如果你想保持在同一个视图中,你必须返回一个 null 值或 void

public String cmdSeleziona_Ordine()
{
    return null;
}

public void cmdSeleziona_Ordine()
{

}

【讨论】:

  • 我想重定向到另一个页面。如果操作返回“Page_EditOrdine.xhtml?faces-redirect=true”,则重新创建 viewScoped bean。仅用于测试,我返回 null 并使用 FacesContext.getCurrentInstance().getExternalContext().redirect("Page_EditOrdi‌​ne.xhtml");。所以它有效..这对我来说很奇怪!
  • 如果我理解,您有两个视图使用同一个 bean?
  • 我希望它被终止以支持新的,但在更改页面之前它重新创建 ViewScoped bean (Bean_OrdiniLavoro),然后更改页面。对不起我的英语
  • 不,我有 2 个视图和两个 bean。当我在第一个视图的表中选择一个项目时,我会转到另一个视图。它是一个简单的 CRUD、列表和编辑。两个 bean 都是 ViewScoped。
  • 好的我明白了,我认为这是JSF的正常行为,我自己暂时没有调查过。
猜你喜欢
  • 2013-12-13
  • 2012-08-27
  • 2012-03-19
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2016-01-09
  • 1970-01-01
相关资源
最近更新 更多