RESOLVIDO! Ajuda com COMBO JSTL

5 respostas
D

Galera nao estou conseguindo fazer um ForEach com jstl o que estou fazendo de errado?

<select name="fornecedores.nomeFornecedor">  
  <c:forEach var="fornecedores" items="${list}">
      <option value="${fornecedores.codigo}">${fornecedores.nomeFornecedor}</option>   
  </c:forEach>   
</select>

Agora meu metodo, estou usando vraptor

@Component("fornecedores")
public class FornecedoresLogic {
	
    @Out
    private List<Fornecedores> fornecedores;    
    
    @Logic
    public void lista() throws Exception {
		PersistenciaDAO persiste = new PersistenciaDAO();     
		
		java.util.List<Fornecedores> list = persiste.listar(Fornecedores.class);     
		
		this.fornecedores = list;
    }    
	
   }

Lembrando que fiz o mesmo para popular um displaytag e funcionou

<display:table id="fornecedores" name="fornecedores">  			
   <display:column property="codigo"/>
  <display:column property="nomeFornecedor"/>
</display:table>

O que estou fazendo de errado

5 Respostas

R

Faça assim.

<select name="fornecedores.nomeFornecedor">    
   <c:forEach var="fornecedor" items="${fornecedores}">  
       <option value="${fornecedor.codigo}">${fornecedor.nomeFornecedor}</option>     
   </c:forEach>     
</select>

Itens é o nome do atributo na sua “action” que tem uma lista, array, etc… para ser exibido.

R

Oi Diogo,

No método lista() vc está apenas populando a List fornecedores. Você também precisa criar um método get para pegar a lista no jsp (via JSTL + EL).

Faz o seguinte cria o método:

public List<Fornecedores> getFornecedores() {
  return this.fornecedores;
}

e na sua pagina coloca assim:

<select name="selectFornecedores">
   <c:forEach var="fornecedor" items="${fornecedores}">
       <option value="${fornecedor.codigo}">${fornecedor.nomeFornecedor}</option>
   </c:forEach>
</select>
R

Verdade esqueci de mencionar o getFornecedores que se faz necessário para que funcione.

D

Galera esta dando esse erro sempre que coloco ${fornecedores] no items

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:87)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
	org.apache.jsp.frmFornecedores_jsp._jspService(frmFornecedores_jsp.java:143)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

O que pode ser

D

Resolvido:

Ficou assim:

LOGIC

@Out
   private List<Fornecedores> fornecedores;    
    
    @Logic(parameters="fornecedores")
    public void lista(Fornecedores fornecedores) throws Exception {
		PersistenciaDAO persiste = new PersistenciaDAO();     
		
		List<Fornecedores> list = persiste.listar(Fornecedores.class);     
						
		this.fornecedores = list;
    }     
    
   public List<Fornecedores> getFornecedores() {
	return fornecedores;
   }
   
   public void setFornecedores(List<Fornecedores> fornecedores) {
	this.fornecedores = fornecedores;
   }

JSP

<select id="codFornecedor" name="fornecedores.codigo" onchange="alert(document.getElementById('codFornecedor').value);">
 <c:forEach var="f" items="${fornecedores}">
 	<option value="${f.codigo}">${f.nomeFornecedor}</option>
 </c:forEach>
 </select>
Criado 16 de dezembro de 2008
Ultima resposta 17 de dez. de 2008
Respostas 5
Participantes 3