Usar a tag <s:select/> Struts 2

2 respostas
J

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…

2 Respostas

D

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

J

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="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%&gt;
&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;
&lt;jsp&#58;include page="../loginCheck.jsp" /&gt;

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

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

dai a pagina:

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

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

dai tenho o struts.xml:

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

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

Criado 6 de novembro de 2007
Ultima resposta 6 de nov. de 2007
Respostas 2
Participantes 2