How i can use a List in rich:listShuttle ???
lionceau Jul 10, 2013 11:25 AMHello,
I use Eclipse, JSF 1.2 and Richfaces 3.3.3. and tomcat 6
I would like to use rich:listShuttle , but I can't use a List in my ListShuttle.
In my gestion-profils.xhtml I have this :
<rich:listShuttle  sourceValue="#{pickBean.sourceList}"
                          targetValue="#{pickBean.listValues}" var="items"  converter="convertString"
                           sourceCaptionLabel="Droits disponibles" targetCaptionLabel="Droit selectionné" listWidth="165px" 
                           listHeight="100px" orderable="true" orderControlsVisible="false" fastOrderControlsVisible="false">
                           <h:outputText value="#{items}"/>
 </rich:listShuttle >
I use init() in pickbean.java to make my List
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.model.SelectItem;
/**
 * 
 * 
 */
public class PickBean {
 /* Variable pour le formulaire pour la gestion des droits du profil*/
 private List<String> listValues;
 private List<String> sourceList;
//     public List<SelectItem> getListeDroitsDisponibles () {
//          List<SelectItem> liste = new ArrayList<SelectItem>();
//          liste.add(new SelectItem(sourceList.get(index), label))
//     }
 /* #################### INIT #################### */
    /**
     * Méthode permettant d'initialieser les champs du formulaire
     * Pour info , l'annotation PostConstruct sert a preciser que cette fonction doit etre executer juste après le constructeur
     */
 @PostConstruct
 public void init() {
 // creation du nouveau formulaire
       // List<SelectItem> list = new ArrayList<SelectItem>();
 //PickBean nouveauFormulaire = null;
 System.out.println("taille sourceList : " + sourceList.size());
 sourceList.add("key1");
 sourceList.add("key2");
 sourceList.add("key3");
 System.out.println("Je suis passé par là...");
 System.out.println("1ère string : " + sourceList.get(0));
 System.out.println("taille sourceList : " + sourceList.size());
 //ajout des champs dans le formulaire
 /*if (nouveauFormulaire.sourceList == null) {                     
 nouveauFormulaire.sourceList.add(new SelectItem("key1", "Utilisateur"));
 nouveauFormulaire.sourceList.add(new SelectItem("key2", "Validateur"));
 nouveauFormulaire.sourceList.add(new SelectItem("key3", "Gestionaire"));
 nouveauFormulaire.sourceList.add(new SelectItem("key4", "Administrateur"));
 nouveauFormulaire.sourceList.add(new SelectItem("key5", "Super Administrateur"));
 }     */ 
 }
 /* #################### listValues #################### */
    /**
     * Méthode permettant d'afficher la liste des champs pour le formulaire
     * à la création du bean.
     * 
     * @return listValues
     */
 public List<String> getListValues() {
//          listValues.add(new SelectItem("csd", "csdvgfb"));
 return listValues;
 }
 public void setListValues(List<String> listval) {
 listValues = listval;
 }
 /* #################### sourceList #################### */
    /**
     * Méthode permettant d'afficher la liste des champs de réponse pour le formulaire
     *  
     *  @return sourceList
     */
 public List<String> getSourceList() {
 return sourceList;
 }
 public void setSourceList(List<String> srcList) {
 sourceList = srcList;
 }
}
module-administration.xml
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <!-- ==================== MANAGED-BEANS ==================== --> <managed-bean> <description> Ce bean est utilisé pour la classe PickBean, ce bean nous sert pour la gestion des droits. </description> <managed-bean-name>pickBean</managed-bean-name> <managed-bean-class>com.applications.gestioncs.administration.PickBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>listValues</property-name> <property-class>java.util.ArrayList</property-class> <list-entries> <value-class>java.lang.String</value-class> </list-entries> </managed-property> <managed-property> <property-name>sourceList</property-name> <property-class>java.util.ArrayList</property-class> <list-entries> <value-class>java.lang.String</value-class> </list-entries> </managed-property> </managed-bean> <!-- ==================== CONVERTERS ==================== --> <converter> <!-- <converter-for-class>java.lang.String</converter-for-class>--> <converter-id>convertString</converter-id> <converter-class>com.applications.gestioncs.administration.StringConverter</converter-class> <!-- <description>Permet de convertir un objet String en String (Utile pour les composants Richfaces)</description>--> </converter> <!-- ==================== NAVIGATION RULES ==================== --> <!-- ========== FROM : module conges ========== --> <navigation-rule> <!-- <description>Règles de navigation à l'intérieur du module de congés</description> <from-view-id>/application/conges/*</from-view-id>--> </navigation-rule> </faces-config>
stringconverter.java
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
/**
 * 
 *
 */
public class StringConverter implements Converter {
 /**
 * {@inheritDoc}
 *
 * @see javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.String)
 */
 @Override
 public Object getAsObject(FacesContext context, UIComponent component,
 String value) {
 System.out.println("getAsObject : " + value);
 return value;
 }
 /**
 * {@inheritDoc}
 *
 * @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
 */
 @Override
 public String getAsString(FacesContext context, UIComponent component,
 Object value) {
 System.out.println("getAsString :" + value);
 return (String) value;
 }
}
Thank you for your help.
Florian,