Insérer une nouvelle ligne dans une datatable

cs_enmaai Messages postés 22 Date d'inscription jeudi 16 décembre 2010 Statut Membre Dernière intervention 14 juin 2011 - 14 juin 2011 à 15:51
cs_enmaai Messages postés 22 Date d'inscription jeudi 16 décembre 2010 Statut Membre Dernière intervention 14 juin 2011 - 14 juin 2011 à 16:10
Salut
je rencontre un problème avec l'utilisation d'une datatable dans une page jsf.
j'utilise datatable pour introduire les valeurs d'un produit (par exemple référence, libellé ..ect) et j'ai un bouton qui me permet d'insérer une nouvelle ligne
mais quand je clique sur le bouton une ligne sera ajoutée mais avec le contenu de la ligne précédente ,

en plus si j'ajoute 3 lignes la prochaine fois quand je compile je trouve ces 3 lignes avec leurs contenus

voici mon bean:


public class MyBean {

private List<Object> myList;
String orderNo;
String productName;

public void setOrderNo(String orderNo){
this.orderNo=orderNo;
}
public void setProductName(String productName){
this.productName=productName;
}

public String getOrderNo()
{
return orderNo;
}

public String getProductName()
{
return productName;
}

public MyBean() {

myList = new ArrayList<Object>();


}

public void addToMyList() {

myList.add(new Object());
}
public List<Object> getMyList() {
return (myList);
}



}

et dans ma page jsf
<h:form>
<h:dataTable value="#{MyBean.myList}"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
>


<h:column>
<f:facet name="header">


<h:outputText value="Order No" />
</f:facet>



<h:inputText value="#{MyBean.orderNo}" />


</h:column>
<h:column>

<f:facet name="header">
<h:outputText value="Product Name" />

</f:facet>

<h:inputText size="20" value="#{MyBean.productName}" />

</h:column>

</h:dataTable>



<h:commandButton value="Add" actionListener="#{MyBean.addToMyList}" />


</h:form>


Par défaut insérer une nouvelle ligne dans une datatable
Salut
je rencontre un problème avec l'utilisation d'une datatable dans une page jsf.
j'utilise datatable pour introduire les valeurs d'un produit (par exemple référence, libellé ..ect) et j'ai un bouton qui me permet d'insérer une nouvelle ligne
mais quand je clique sur le bouton une ligne sera ajoutée mais avec le contenu de la ligne précédente ,

en plus si j'ajoute 3 lignes la prochaine fois quand je compile je trouve ces 3 lignes avec leurs contenus

voici mon bean:
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



public class MyBean {

private List<Object> myList;
String orderNo;
String productName;

public void setOrderNo(String orderNo){
this.orderNo=orderNo;
}
public void setProductName(String productName){
this.productName=productName;
}

public String getOrderNo()
{
return orderNo;
}

public String getProductName()
{
return productName;
}

public MyBean() {

myList = new ArrayList<Object>();


}

public void addToMyList() {

myList.add(new Object());
}
public List<Object> getMyList() {
return (myList);
}





}

et dans ma page jsf
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



<h:form>
<h:dataTable value="#{MyBean.myList}"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
>


<h:column>
<f:facet name="header">


<h:outputText value="Order No" />
</f:facet>



<h:inputText value="#{MyBean.orderNo}" />


</h:column>
<h:column>

<f:facet name="header">
<h:outputText value="Product Name" />

</f:facet>

<h:inputText size="20" value="#{MyBean.productName}" />

</h:column>

</h:dataTable>



<h:commandButton value="Add" actionListener="#{MyBean.addToMyList}" />


</h:form>

la question num1: comment initialiser ma liste pour que je puisse obtenir un tableau vide (aucune ligne ajoutée)
la question num 2 : comment obtenir une nouvelle ligne vide (rafraichir datatable )
Pourriez vous m'aider s'il vous plait
je vous remercie

2 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
14 juin 2011 à 16:02
Question 1 : il suffit d'utiliser une liste vide : new ArrayList<Object>() et tu n'auras aucune ligne dans ta table.

Pour obtenir une nouvelle ligne, il faut que tu l'ajoutes à la liste qui contient les objets à afficher, donc à la base de données et que la page soit rechargée (nouvelle requête)
0
cs_enmaai Messages postés 22 Date d'inscription jeudi 16 décembre 2010 Statut Membre Dernière intervention 14 juin 2011
14 juin 2011 à 16:10
Salut Julien
oui dans mon code j'ai mis ( au niveau de constructeur )

public MyBean() {

myList = new ArrayList<Object>();

}
mais j'ai toujours ce probléme y a t il une possibilité d'initialiser ma liste a null au niveau de constructeur pour que je puisse obtenir une table vide
pourriez vous me dire comment je dois faire
je vous remercie
0
Rejoignez-nous