Bom dia pessoal.
Sei que tem outros tópicos aqui relacionados a esta questão, porem me pareceu que nenhum deles ficou bem explicado, testei diversas vezes e de diversas formas esta tag, porem não consigo fazer com que o select veha preenchido.
Alguem poderia me passar como??
por Exemplo:
<s:select label=“Produto” name=“nrEstoque” list=“listaProdutos” />
em list eu trago do banco a lista , neste caso eu preciso fazer uma action para ela???
e colocar no onChance sempre que for trocar?
Quem puder ajudar…
Olá JPacheco,
Nesta tag o Struts irá procurar por um método getListaProdutos() na sua Action que devolva a lista dos itens para preencher o select.
e um método getNrEstoque() retornando o valor que deverá estar selecionado.
caso o seu listProdutos tenha apenas uma lista de String, este valor será tanto o value quanto o texto do select. Se for uma lista de Classes (POJO) você deverá usar os parametros listKey e listValue da tag para indicar os atributos de origem dos valores
Quanto a ultima pergunta, a página jsp que contém esta tag deverá ser o result de alguma Action, e nesta action é que você fará a carga dos valores, antes de ir para o result.
Veja se consegue seguir adiante com estas informações, senão dah um berro aih
att
Decio Heinzelmann Luckow
Sun Certified Programmer for the Java 2 Plataform, Standard Edition 5.0
Sun Certified Web Component Developer for the Java 2 Platform, Enterprise Edition 1.4
Cara muito obrigado eu entendi como que funciona, mas no meu caso nã ta rolando e ainda o pior o erro ta muito dificil de decifrar segue minhas paginas:
primeiro eu tenho a prod onde ela tem a div que manda a action para a a outra pagina pra popular o select:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<jsp:include page="../loginCheck.jsp" />
<html>
<head>
<title>Retirada de estoque</title>
<s:head theme="ajax" />
</head>
<body>
<s:div id="produtos" href="listarProd!input.action" theme="ajax" />
</body>
</html>
dai a pagina:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:include page="../loginCheck.jsp" />
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="../Include/placar.css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Retirada do Estoque</title>
</head>
<s:head theme="ajax"/>
<body>
<s:form>
<s:select list="listaProd"
name="listaProd.denominacao"
listValue="denominacao"
label="Produtos"
listKey="idProduto"/>
</s:form>
</body>
</html>
dai tenho o struts.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<package name="default" extends="struts-default">
<action name="inserirPessoas!*"
class="br.com.actions.PessoasAction" method="{1}">
<result name="success">/profissionais/cadastraPessoa.jsp</result>
<result name="input">/profissionais/cadastraPessoa.jsp</result>
<interceptor-ref name="paramsPrepareParamsStack" />
</action>
<action name="listar"
class="br.com.actions.ListaAction"
method="listaPessoas">
<result name="success">/procedimentos/procedimentos.jsp</result>
<result name="input">/procedimentos/procedimentos.jsp</result>
<interceptor-ref name="paramsPrepareParamsStack"/>
</action>
<action name="listarProd"
class="br.com.actions.ListaAction">
<result name="success">/estoque/retiradaEstoque.jsp</result>
<result name="input">/estoque/retiradaEstoque.jsp</result>
<interceptor-ref name="paramsPrepareParamsStack"/>
</action>
<action name="produto!*" method="{1}"
class="br.com.actions.ProdutosAction">
<result name="success">/estoque/produtos.jsp</result>
<result name="input">/estoque/cadastraProdutos.jsp</result>
<interceptor-ref name="paramsPrepareParamsStack" />
</action>
<action name="login" class="br.com.actions.LoginAction" >
<result name="success" type="dispatcher">/principal.jsp</result>
<result name="error" type="redirect">/login.jsp</result>
</action>
<action name="logout" class="br.com.actions.LoginAction" method="logout" >
<result name="success" type="redirect">/login.jsp</result>
</action>
</package>
</struts>
dai tenho a action que envia um Collection que seria o correto:
package br.com.actions;
import java.util.Collection;
import br.com.entities.Pessoas;
import br.com.entities.Procedimentos;
import br.com.entities.Produtos;
import br.com.service.PessoasService;
import br.com.service.ProcedimentosService;
import br.com.service.ProdutosService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
public class ListaAction extends ActionSupport implements Preparable{
private static final long serialVersionUID = 1L;
private Collection<Pessoas> pessoas;
private Collection<Procedimentos> procedimentos;
private PessoasService pessoasService;
private ProcedimentosService procedimentosService;
private ProdutosService prodService;
private Collection<Produtos> listaProd;
public String input() {
return SUCCESS;
}
public void prepare() throws Exception {
pessoasService = new PessoasService();
procedimentosService = new ProcedimentosService();
prodService = new ProdutosService();
this.pessoas = pessoasService.listaMedicos();
this.procedimentos = procedimentosService.lista();
this.listaProd = prodService.buscaEstoque();
}
public String listaPessoas() {
PessoasService p = new PessoasService();
this.pessoas = p.lista();
return "success";
}
public Collection<Pessoas> getPessoas() {
return pessoas;
}
public void setPessoas(Collection<Pessoas> pessoasList) {
this.pessoas = pessoasList;
}
public Collection<Procedimentos> getProcedimentos() {
return procedimentos;
}
public void setProcedimentos(Collection<Procedimentos> procedimentos) {
this.procedimentos = procedimentos;
}
public Collection<Produtos> getListaProd() {
return listaProd;
}
public void setListaProd(Collection<Produtos> listaProd) {
this.listaProd = listaProd;
}
}
e o erro disparado no meu console do eclipse e este:
caso tu souber me ajudar veio…
talvez eu tenha passado algum nome errado la quando monto o select na pagina…
Aguardo