C'est une impression ou ce composant est bourré de bugs

je fais des tests avec la version 3.2 de primefaces et j'ai des comportements complètement aberrants.

j'affiche une première fois la page, je peux utiliser le paginator, mais les liens ou les boutons ne fonctionnent plus après.

ou alors j'affiche une première fois la page, je fais une opération sur la liste, et il n'y a plus que les indexes qui changent, la liste ne bouge pas ou alors je me choppe des erreurs NumberFormatException

Mais d'où ça vient ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 
14:12:52,476 Avertissement [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--127.0.0.1-8080-1) null: java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:454) [:1.7.0_01]
    at java.lang.Integer.valueOf(Integer.java:582) [:1.7.0_01]
    at org.primefaces.component.datatable.DataHelper.decodePageRequest(DataHelper.java:49) [primefaces-3.2.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:73) [primefaces-3.2.jar:]
    at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:795) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.faces.component.UIData.processDecodes(UIData.java:984) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:571) [primefaces-3.2.jar:]
    at javax.faces.component.UIForm.processDecodes(UIForm.java:216) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.primefaces.component.layout.Layout.processDecodes(Layout.java:238) [primefaces-3.2.jar:]
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:926) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09-jbossorg-4]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09-jbossorg-4]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09-jbossorg-4]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) [jboss-jsf-api_2.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.0.Final.jar:7.0.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
    at java.lang.Thread.run(Thread.java:722) [:1.7.0_01]
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1) javax.faces.FacesException: null
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at java.lang.Thread.run(Thread.java:722)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1) Caused by: java.lang.NumberFormatException: null
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at java.lang.Integer.parseInt(Integer.java:454)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at java.lang.Integer.valueOf(Integer.java:582)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.primefaces.component.datatable.DataHelper.decodePageRequest(DataHelper.java:49)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:73)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:795)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIData.processDecodes(UIData.java:984)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:571)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIForm.processDecodes(UIForm.java:216)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at org.primefaces.component.layout.Layout.processDecodes(Layout.java:238)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1047)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:926)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
 
14:12:52,476 ERROR [stderr] (http--127.0.0.1-8080-1)     ... 16 more
Contexte :
Eclipse indigo
java 1.7
primefaces 3.2

La page n'a pas grand chose de spécial (je trouve)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
 
<ui:composition template="/template.xhtml">
 
    <ui:define name="content">
        <h:form id="jsfform1">
 
        <p:commandButton onclick="panel1.show()" value="Nouveau" type="button"/>
        <p:commandButton action="#{personManager.delete}" value="Supprimer" immediate="true" update="persons"/>
        <p:commandButton action="#{personManager.reinit}" value="Recréer les données" immediate="true" update="persons"/>
 
        <p:growl id="messages" autoUpdate="true" showDetail="true" showSummary="false" sticky="false" />
 
 
        <p:dataTable value="#{personManager.cacheList}" var="item" id="persons" binding="#{personManager.uiDataTable}"
            selectionMode="multiple" selection="#{personManager.selectedPersons}" 
            rowKey="#{item.identity}" style="padding-top:10;width:850px" editable="true"
            emptyMessage="Aucune donnée" paginator="true" rowsPerPageTemplate="5,10,15" rows="#{personManager.currentRows}" widgetVar="personsTable" >
 
            <f:facet name="header">  
                <p:outputPanel>  
                    <h:outputText value="Recherche dans toutes les colonnes :" />  
                    <p:inputText id="globalFilter" onkeyup="personsTable.filter()" style="width:150px" />  
                </p:outputPanel>  
            </f:facet>  
 
            <p:column headerText="#{msg.form_list_identity}" style="width:100px" filterBy="#{item.identity}" filterMatchMode="contains">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{item.identity}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="identity" value="#{item.identity}" style="width:90%" validator="#{personManager.validateForm}" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
 
            <p:column headerText="#{msg.form_list_name}" style="width:450px" filterBy="#{item.name}" filterMatchMode="contains">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{item.name}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="name" value="#{item.name}" style="width:90%" validator="#{personManager.validateForm}"/>
                    </f:facet>
                </p:cellEditor>
            </p:column>
 
            <p:column headerText="#{msg.form_list_birthdate}" style="width:100px;text-align:center" filterBy="#{item.birthdate}" filterMatchMode="contains">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{item.birthdate}">
                            <f:convertDateTime pattern="dd/MM/yyyy" timeZone="#{personManager.serverTimeZone}"/>
                        </h:outputText>
                    </f:facet>
                    <f:facet name="input">
                        <p:calendar id="birthdate2" value="#{item.birthdate}" style="width:90%" mode="popup" pattern="dd/MM/yyyy" validator="#{personManager.validateForm}"/>
                    </f:facet>
                </p:cellEditor>
            </p:column>
 
            <p:column headerText="#{msg.form_list_age}" style="width:100px;text-align:right" filterBy="#{item.age}" filterMatchMode="contains">
                <h:outputText value="#{item.age}" />
            </p:column>
 
            <p:column style="width:100px">
                <p:rowEditor />
                <p:commandLink action="#{personManager.clear}" update="@form" immediate="true">
                    <p:graphicImage url="./images/delete.gif" style="border:0"/>
                    <f:param name="identity" value="#{item.identity}"/>
                </p:commandLink>
                <p:commandLink action="#{personManager.loadDetail}" immediate="true">
                    <p:graphicImage url="./images/detail.gif" style="border:0"/>
                    <f:param name="identity" value="#{item.identity}"/>
                </p:commandLink>
            </p:column>
        </p:dataTable>
    </h:form>
 
 
    <h:form id="jsfform2">
 
        <p:dialog id="editDialog" header="Nouvelle personne" widgetVar="panel1"  showEffect="drop" hideEffect="explode" modal="false" appendToBody="false">
            <p:panelGrid columns="2">
                <h:outputText for="identity" value="#{msg.form_label_identity}" />
                <p:inputText id="identity" value="#{personManager.identity}" validator="#{personManager.validateForm}"/>
 
                <h:outputLabel for="name" value="#{msg.form_label_name}" />
                <p:inputText id="name" value="#{personManager.name}" validator="#{personManager.validateForm}" />
 
                <h:outputLabel for="birthdate" value="#{msg.form_label_birthdate}" />
                <p:calendar id="birthdate" value="#{personManager.birthdate}" mode="popup" pattern="dd/MM/yyyy" required="false" requiredMessage="Date obligatoire" validator="#{personManager.validateForm}"/>
 
                <f:facet name="footer">
                    <p:commandButton action="#{personManager.save}"
                        value="#{msg.form_action_save}"
                        icon="ui-icon-check" style="margin-left:0" />
                </f:facet>
            </p:panelGrid>
        </p:dialog>
 
    </h:form>
    </ui:define>
</ui:composition>
 
</html>