Primefaces Datatable重新创建viewScoped bean

时间:2013-05-21 08:45:13

标签: jsf-2 primefaces view-scope

我有一个包含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都是ReCreated。这就是问题所在。

<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就足够了 但在这种情况下,它不起作用。

如果我使用的是代替它的话。

非常感谢。 的Davide

1 个答案:

答案 0 :(得分:0)

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

如果您希望保持同一视图,则必须返回 null 值或 void

public String cmdSeleziona_Ordine()
{
    return null;
}

public void cmdSeleziona_Ordine()
{

}