bonjour tout le monde,
j'ai tester l'exemple de richfaces <rich:extendedDataTable> avec selection de ligne ca marche parfaitement
JSF:
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
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 <h:panelGrid columns="2"> <h:form> <fieldset style="margin-bottom: 10px;"> <legend> <h:outputText value="Selection Mode " /> </legend> <h:selectOneRadio value="#{extTableSelectionBean.selectionMode}"> <f:selectItem itemLabel="Single" itemValue="single" /> <f:selectItem itemLabel="Multiple" itemValue="multiple" /> <f:selectItem itemLabel="Multiple Keyboard-free" itemValue="multipleKeyboardFree" /> <a4j:ajax render="table, res" /> </h:selectOneRadio> </fieldset> <rich:extendedDataTable value="#{extTableSelectionBean.inventoryItems}" var="car" selection="#{extTableSelectionBean.selection}" id="table" frozenColumns="2" style="height:300px; width:500px;" selectionMode="#{extTableSelectionBean.selectionMode}"> <a4j:ajax execute="@form" event="selectionchange" listener="#{extTableSelectionBean.selectionListener}" render=":res" /> <f:facet name="header"> <h:outputText value="Cars marketplace" /> </f:facet> <rich:column> <f:facet name="header"> <h:outputText value="vendor" /> </f:facet> <h:outputText value="#{car.vendor}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Model" /> </f:facet> <h:outputText value="#{car.model}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Price" /> </f:facet> <h:outputText value="#{car.price}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Mileage" /> </f:facet> <h:outputText value="#{car.mileage}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="VIN Code" /> </f:facet> <h:outputText value="#{car.vin}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Items stock" /> </f:facet> <h:outputText value="#{car.stock}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Days Live" /> </f:facet> <h:outputText value="#{car.daysLive}" /> </rich:column> </rich:extendedDataTable> </h:form> <a4j:outputPanel id="res"> <rich:panel header="Selected Rows:" rendered="#{not empty extTableSelectionBean.selectionItems}"> <rich:list type="unordered" value="#{extTableSelectionBean.selectionItems}" var="sel"> <h:outputText value="#{sel.vendor} - #{sel.model} - #{sel.price}" /> </rich:list> </rich:panel> </a4j:outputPanel> </h:panelGrid>
mon problem maintenant ,je veut que au debut du chargement de la page il selectionne une ligne spécifique .
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 @ManagedBean @ViewScoped public class ExtTableSelectionBean implements Serializable { private String selectionMode = "multiple"; private Collection<Object> selection; @ManagedProperty(value = "#{carsBean.allInventoryItems}") private List<InventoryItem> inventoryItems; private List<InventoryItem> selectionItems = new ArrayList<InventoryItem>(); public void selectionListener(AjaxBehaviorEvent event) { UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent(); Object originalKey = dataTable.getRowKey(); selectionItems.clear(); for (Object selectionKey : selection) { dataTable.setRowKey(selectionKey); if (dataTable.isRowAvailable()) { selectionItems.add((InventoryItem) dataTable.getRowData()); } } dataTable.setRowKey(originalKey); } public Collection<Object> getSelection() { return selection; } public void setSelection(Collection<Object> selection) { this.selection = selection; } public List<InventoryItem> getInventoryItems() { return inventoryItems; } public void setInventoryItems(List<InventoryItem> inventoryItems) { this.inventoryItems = inventoryItems; } public InventoryItem getSelectionItem() { if (selectionItems == null || selectionItems.isEmpty()) { return null; } return selectionItems.get(0); } public List<InventoryItem> getSelectionItems() { return selectionItems; } public void setSelectionItems(List<InventoryItem> selectionItems) { this.selectionItems = selectionItems; } public String getSelectionMode() { return selectionMode; } public void setSelectionMode(String selectionMode) { this.selectionMode = selectionMode; } }
j'ai pu trouvé une solution pour qu'il demare une methode avant la sélection,il suffit juste d'ajouter dans <rich:extendedDataTable> l'attribut onbeforeselectionchange="".
j'essayer de selectionner avec dataTable.setRowKey(); dans une methode que j'ai applé dans onbeforeselectionchange"" mais j'ai toujours une exception Nullpointer
Partager