Primefaces数据表和ViewScoped

时间:2015-05-08 12:07:54

标签: primefaces jsf-2.2 view-scope

我在wildfly 8.2.0(mojarra 2.2.8)上使用了primefaces 5.0。

我尝试使用带扩展的简单primefaces数据表,但每次扩展行时,都会触发我的支持bean @PostConstruct(它会重新加载数据,从而首先使@ViewScoped无效)。

我在stackoverflow上看到了关于这个问题的其他问题,但没有解决方案对我有用:

  • 我正在使用JSF 2.2 +
  • 我没有使用任何JSTL标签
  • 我在web.xml中禁用了部分状态保存
  • 我尝试使用不同的@ViewScoped(bean,view甚至omnifaces'one)

我的豆子:

@Named
@javax.faces.view.ViewScoped
@SuppressWarnings("serial")
public class TestBean implements Serializable {

    private List<String> things;

    @PostConstruct
    public void initialize() {
        System.out.println("initializing...");
        this.things = Arrays.asList("michael", "david", "paul");
    }

    public List<String> getThings() {
        return this.things;
    }
}

我的模板:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Test</title>
    </h:head>
    <h:body>
        <p:dataTable value="#{testBean.things}" var="thing">
            <p:column>
                <p:rowToggler />
            </p:column>
            <p:column>
                <h:outputText value="#{thing}" />
            </p:column>
            <p:rowExpansion>
                <h:outputText value="#{thing}" />
            </p:rowExpansion>
        </p:dataTable>
    </h:body>
</html>

1 个答案:

答案 0 :(得分:0)

要工作,0 1 2 3 4 5 4 3 2 1 0 1 2 3 4 5 4 ... 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 ... 必须在<p:dataTable>内。