Foro sobre Java EE > Problema con rich:picklist
listItemExchangeable es una lista que utilizo para mi logica de negocio y listAssCom es una lista que cree para segun yo retener los elementos ya seleccionados muchas gracias
Amigos creo que esto sera de gran ayuda, ya que a mi me sirvió mucho, en este link encontré justo lo que necesitaba:
http://www.coderanch.com/t/213378/JSF/java/selectOneMenu-database
por si el link ya no existiera, les comparto el código:
Esta es la vista:
test1.jsp
<html>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<head>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<title>
</title>
</head>
<h:form >
<h:selectOneMenu value="#{test1.names}">
<f:selectItems value="#{test1.names}" />
</h:selectOneMenu>
</h:form>
</f:view>
</html>
este es el bean
test1.java
package prueba;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.naming.NamingException;
public class Test1{
ArrayList arrayList = new ArrayList();
public SelectItem[] getValues() {
return arrayListToSelectItem(arrayList);
}
public SelectItem[] arrayListToSelectItem(ArrayList arrayList)
{
SelectItem[] result = new SelectItem[arrayList.size()];
arrayList.toArray(result);
return result;
}
private Connection con_Oracle;
private String sbd="xe";
private String suser="jvg";
private String spass="jvg";
private String surl="jdbc:oracle:thin:@172.17.176.119:1521:"+sbd;
public void open() throws Exception{
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
con_Oracle=DriverManager.getConnection(surl,suser,spass);
}catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
}
public ArrayList getNames() throws SQLException, NamingException {
ArrayList arrayList = new ArrayList();
String SQL_query = "select idbanco,descripcion from tbl_bco_corresponsal";
try{
try {
open();
} catch (Exception e) {
e.printStackTrace();
}
Statement stmt = con_Oracle.createStatement();
ResultSet result = stmt.executeQuery(SQL_query);
while (result.next()) {
arrayList.add(new SelectItem(result.getString(2)));
}
return arrayList;
}finally{
close();
}
}
public void close() throws SQLException {
con_Oracle.close();
}
}
El codigo del link es distinto, por que lo modifique, para mi utilidad, aunque no mucho, espero les sirva, muchas gracias por tu respuesta.
Hola Amigos tengo el siguiente problema estoy utilizando un h:selectOneMenu dependiendo lo que seleccione en mi rich: picklist se muestra una lista , pero cuando paso elementos de mi lista del lado izquierdo al lado derecho y nuevamente utilizo el selectOneMenu lo que tengo del lado derecho seleccionado se limpia alguien sabe como mantener esos valores dejo el codigo de mi jsp y tambien la de mi bean
<h:selectOneMenu id="selectFinishedExchangeable" value="#{consultBomBean.filterExchangeable}"
title="#{msg.lblselectoption}" styleClass="select">
<f:selectItems id="listStatus"
value="#{consultBomBean.listItemExchangeable}" />
</h:selectOneMenu>
<rich:pickList id="picklistItem" value="#{consultBomBean.listAssCom}">
<f:selectItems id = "pickSelectedItems" value="#{consultBomBean.listSelectItemComponSubAss}" />
</rich:pickList>
BEAN
public String onChangeExchangeList() {
listAssCom = new ArrayList<SelectItem>();
String query = "";
if (getFilterExchangeable() != 0) {
query = MessageFormat.format(properties.getQuery("qconsultAssemblyorcomponents"),getFilterExchangeable());
List<Object[]> listComponentSubAss = new ArrayList<Object[]>();
listComponentSubAss = serviceItem.nativeSQL(query);
if (listComponentSubAss != null) {
if (!listComponentSubAss.isEmpty()) {
listSelectItemComponSubAss = new ArrayList<SelectItem>();
SelectItem comSub = null;
for (Object[] items : listComponentSubAss) {
comSub = new SelectItem(Integer.parseInt(items[0].toString()), items[1].toString());
listSelectItemComponSubAss.add(comSub);
}
}
}
return "";
}else if(getFilterExchangeable() == 0){
listSelectItemComponSubAss.clear();
}
return "";
}
de ante mano muchas gracias por su ayuda