Usar a tag <s:select/> Struts 2

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 :slight_smile:

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:

&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
	pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot;%&gt;
&lt;jsp&#58;include page=&quot;../loginCheck.jsp&quot; /&gt;

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Retirada de estoque&lt;/title&gt;
&lt;s&#58;head theme=&quot;ajax&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;s&#58;div id=&quot;produtos&quot; href=&quot;listarProd!input.action&quot; theme=&quot;ajax&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;

dai a pagina:

&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=ISO-8859-1&quot;
	pageEncoding=&quot;ISO-8859-1&quot;%&gt;
&lt;jsp&#58;include page=&quot;../loginCheck.jsp&quot; /&gt;
&lt;%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot; %&gt;

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http&#58;//www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../Include/placar.css&quot;&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt;
&lt;title&gt;Retirada do Estoque&lt;/title&gt;
&lt;/head&gt;
&lt;s&#58;head theme=&quot;ajax&quot;/&gt;
&lt;body&gt;
&lt;s&#58;form&gt;
&lt;s&#58;select list=&quot;listaProd&quot; 
	name=&quot;listaProd.denominacao&quot; 
	listValue=&quot;denominacao&quot;
	label=&quot;Produtos&quot;
	listKey=&quot;idProduto&quot;/&gt;
&lt;/s&#58;form&gt;
&lt;/body&gt;
&lt;/html&gt;

dai tenho o struts.xml:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE struts PUBLIC
	&quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot;
	&quot;http&#58;//struts.apache.org/dtds/struts-2.0.dtd&quot;&gt;

&lt;struts&gt;
	&lt;include file=&quot;struts-default.xml&quot; /&gt;
	&lt;package name=&quot;default&quot; extends=&quot;struts-default&quot;&gt;
		&lt;action name=&quot;inserirPessoas!*&quot;
			class=&quot;br.com.actions.PessoasAction&quot; method=&quot;&#123;1&#125;&quot;&gt;
			&lt;result name=&quot;success&quot;&gt;/profissionais/cadastraPessoa.jsp&lt;/result&gt;
			&lt;result name=&quot;input&quot;&gt;/profissionais/cadastraPessoa.jsp&lt;/result&gt;
			&lt;interceptor-ref name=&quot;paramsPrepareParamsStack&quot; /&gt;
		&lt;/action&gt;
		&lt;action name=&quot;listar&quot;
			class=&quot;br.com.actions.ListaAction&quot;
			method=&quot;listaPessoas&quot;&gt;
			&lt;result name=&quot;success&quot;&gt;/procedimentos/procedimentos.jsp&lt;/result&gt;
			&lt;result name=&quot;input&quot;&gt;/procedimentos/procedimentos.jsp&lt;/result&gt;
			&lt;interceptor-ref name=&quot;paramsPrepareParamsStack&quot;/&gt;
		&lt;/action&gt;
		
		&lt;action name=&quot;listarProd&quot;
			class=&quot;br.com.actions.ListaAction&quot;&gt;
			&lt;result name=&quot;success&quot;&gt;/estoque/retiradaEstoque.jsp&lt;/result&gt;
			&lt;result name=&quot;input&quot;&gt;/estoque/retiradaEstoque.jsp&lt;/result&gt;
			&lt;interceptor-ref name=&quot;paramsPrepareParamsStack&quot;/&gt;
		&lt;/action&gt;
		
		&lt;action name=&quot;produto!*&quot; method=&quot;&#123;1&#125;&quot;
			class=&quot;br.com.actions.ProdutosAction&quot;&gt;
			&lt;result name=&quot;success&quot;&gt;/estoque/produtos.jsp&lt;/result&gt;
			&lt;result name=&quot;input&quot;&gt;/estoque/cadastraProdutos.jsp&lt;/result&gt;
			&lt;interceptor-ref name=&quot;paramsPrepareParamsStack&quot; /&gt;
		&lt;/action&gt;
        &lt;action name=&quot;login&quot; class=&quot;br.com.actions.LoginAction&quot; &gt;
            &lt;result name=&quot;success&quot; type=&quot;dispatcher&quot;&gt;/principal.jsp&lt;/result&gt;
            &lt;result name=&quot;error&quot; type=&quot;redirect&quot;&gt;/login.jsp&lt;/result&gt;
        &lt;/action&gt;
        &lt;action name=&quot;logout&quot; class=&quot;br.com.actions.LoginAction&quot; method=&quot;logout&quot; &gt;
            &lt;result name=&quot;success&quot; type=&quot;redirect&quot;&gt;/login.jsp&lt;/result&gt;
        &lt;/action&gt;		
	&lt;/package&gt;
&lt;/struts&gt;

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&#123;

	private static final long serialVersionUID = 1L;

	private Collection&lt;Pessoas&gt; pessoas;
	private Collection&lt;Procedimentos&gt; procedimentos;
	private PessoasService pessoasService;
	private ProcedimentosService procedimentosService;
	private ProdutosService prodService;
	private Collection&lt;Produtos&gt; listaProd;

	public String input&#40;&#41; &#123;
		return SUCCESS;
	&#125;

	public void prepare&#40;&#41; throws Exception &#123;
		pessoasService = new PessoasService&#40;&#41;;
		procedimentosService = new ProcedimentosService&#40;&#41;;
		prodService = new ProdutosService&#40;&#41;;
		this.pessoas = pessoasService.listaMedicos&#40;&#41;;
		this.procedimentos = procedimentosService.lista&#40;&#41;;
		this.listaProd = prodService.buscaEstoque&#40;&#41;;
		
	&#125;
	
	public String listaPessoas&#40;&#41; &#123;
		PessoasService p = new PessoasService&#40;&#41;;
		this.pessoas = p.lista&#40;&#41;;
		return &quot;success&quot;;
	&#125;
	
	public Collection&lt;Pessoas&gt; getPessoas&#40;&#41; &#123;
		return pessoas;
	&#125;

	public void setPessoas&#40;Collection&lt;Pessoas&gt; pessoasList&#41; &#123;
		this.pessoas = pessoasList;
	&#125;

	public Collection&lt;Procedimentos&gt; getProcedimentos&#40;&#41; &#123;
		return procedimentos;
	&#125;

	public void setProcedimentos&#40;Collection&lt;Procedimentos&gt; procedimentos&#41; &#123;
		this.procedimentos = procedimentos;
	&#125;

	public Collection&lt;Produtos&gt; getListaProd&#40;&#41; &#123;
		return listaProd;
	&#125;

	public void setListaProd&#40;Collection&lt;Produtos&gt; listaProd&#41; &#123;
		this.listaProd = listaProd;
	&#125;
&#125;

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