• Autor: admin
  • Publicado: Jun 1st, 2009
  • Categoria: Articulos
  • Comentarios: 1

Richfaces, rich:suggestionbox un ejemplo sencillo

suggestions

Tal vez, una de las funciones más usadas hoy en dia en el Web 2.0 junto con las ventanas flotantes, RichFaces nos ofrece el rich:suggestionbox, un componente facil de usar y donde ahora vamos a ver un sencillisimo ejemplo. Previamente debemos saber que necesitamos, pues un Bean, de sesión preferiblemente, aunque puedes usar un request, y dentro del bean solo necesitaremos un metodo que regrese un List, ArrayList o cualquiera que se extienda de la clase Collection.

Existen otras propiedades que vamos a tratar de explicar aqui

  • tokens : Si deseas buscar más de un elemento, el token es el delimitador para hacer más sugerencias.
  • height, width : Es el alto y el ancho de la venta que aparece para la sugerencia.
  • cellpadding , cellspacing : Es el espacio entre el contenido y el borde.
  • shadowOpacity, shadowDepth : Estos parametros sirven para mostrar la sombra de manera más personalizada.
  • minChars : El número de caracteres necesarios para que la sugerencia aparezca.
  • rules : Se pueden agregar una serie de reglas para las busquedas.
  • nothingLabel : La cadena de texto que aparece si no encuentra ningún resultado.


<h:panelGrid columns="1" styleClass="wrapper">
				<h:outputLabel value="Buscando Sugerencias" styleClass="title" for="name" />
				<h:panelGroup>
					<h:panelGrid columns="2">
						<h:inputText value="#{testBean.sugestion}" id="name" styleClass="textBox" size="50"/>
						<a4j:commandButton value="Sugerencias" styleClass="testButton" style="testButton fontBackgroundColor"></a4j:commandButton>
					</h:panelGrid>
					     <rich:suggestionbox id="suggestionBoxId" for="name"
                                        suggestionAction="#{testBean.autocompletar}" var="result"
                                        tokens="," height="150" width="160" cellpadding="2"
                                        cellspacing="2"   shadowOpacity="4" shadowDepth="4"
                                        minChars="1" rules="none" nothingLabel="No se encontro nada">
                                        <h:column>
                                            <h:outputText value="#{result}" style="font-style:bold" />
                                        </h:column>
                                    </rich:suggestionbox>
				</h:panelGroup>
			</h:panelGrid>

Y ahora el Bean, si usas Spring o JSF Nativo, declara el Bean donde sea conveniente.

public class TestBean  {
 
	List<string> lista = new ArrayList<string>();
	  private String suggest = "";
 
	public TestBean  () {
		lista.add("JotaDeveloper");
		lista.add("SwordFishCode");
		lista.add("Juan Ortega");
		lista.add("CNN Noticiero");
		lista.add("Adobe Photoshop");
		lista.add("Twitter");
	}
 
	public List<string> autocompletar(Object suggest) {
		String pref = (String) suggest;
		ArrayList<string> result = new ArrayList<string>();
		Iterator<string> iterator = lista.iterator();
		while (iterator.hasNext()) {
			String elem = ((String) iterator.next());
			if ((elem != null && elem.toLowerCase().indexOf(pref.toLowerCase()) == 0)
					|| "".equals(pref)) {
				result.add(elem);
			}
		}
		return result;
 
	}
 
	public String getSugestion() {
		return sugestion;
	}
 
 
	public void setSugestion(String sugestion) {
		this.sugestion = sugestion;
	}
 
}

Tags: , ,

One Response to “Richfaces, rich:suggestionbox un ejemplo sencillo”


  1. Luciano
    on Mar 19th, 2010
    @ 8:23

    Gracias muy bueno el ejemplo, dejo una version un poco mas simplificada del autocompletar porque se me hizo algo confuso con el iterator, saludos!

    public List<String> autocompletar(Object suggest) {

    String pref = (String) suggest;
    ArrayList<String> result = new ArrayList<String>();

    for(String elem: lista){
    if ((elem.toLowerCase().indexOf(pref.toLowerCase()) == 0)) {
    result.add(elem);
    }
    }
    return result;
    }

Dejar una Respuesta

Spam Protection by WP-SpamFree

© 2009 Jotadeveloper Blog. Nuestros contenidos están bajo licencia Creative Commons mientras no se indique lo contrario,
y pueden reproducirse libremente sin más que mencionar la fuente ("JotaDeveloper") y la URL concreta del artículo original. .

This blog is powered by Wordpress and JotaDeveloperTheme.