[Richfaces]Sélection par défaut de <rich:extendedDataTable>
	
	
		bonjour tout le monde,
j'ai tester l'exemple de richfaces  <rich:extendedDataTable> avec selection de ligne ca marche parfaitement
JSF:
	Code:
	
| 12
 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> | 
 Bean
	Code:
	
| 12
 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;
    }
} | 
 mon problem maintenant ,je veut que au debut du chargement de la page il selectionne une ligne spécifique .
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