COMBO BOX com STRUTS

Bom Dia Pessoal,

Estou desevolvendo uma aplicação utilizando Struts e hibernate. Estou com um pequeno problema com ComboBox.

para prencher o combo box dinamicamente eu estou utilizando scriptles no meu jsp, [color=red]mas não

quero utilizar scriptles[/color]. Alguem pode me ajudar com o prenchimento do COMBO BOX UTILIZANDO STRUTS !!!

ABAIXO SEGUE O MEU JSP…

<%@ taglib uri=“http://struts.apache.org/tags-html"prefix="html” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<%@page import=“java.util.List”%>
<%@page import=“loja.entidade.Cd”%>
<%@page import=“loja.dao.CdDAO”%>
<%@page import=“loja.hibernate.DAOFactory”%>
<html:html>
<head><title>Sistema de Teste do Struts</title></head>

<%
DAOFactory factory = new DAOFactory();
CdDAO dao = factory.getCdDAO();
List<Cd> listaCds = dao.listaTudo();
request.setAttribute("lista",listaCds);
%>

&lt;html:form action="/adicionaMusica" &gt;		
	CD:
	&lt;html:select property="musica.cd"&gt;
				&lt;html:option value=""&gt; Selecione o CD&lt;/html:option&gt;
		  		&lt;html:options collection="lista" property="id" labelProperty="titulo"  /&gt;
&lt;/html:select&gt;			<br>					
	Nome:
	&lt;html:text property="musica.nome"/&gt;<br/>
			
		
	&lt;html:submit &gt; Enviar Dados&lt;/html:submit&gt;		
&lt;/html:form&gt;

</html:html>

Na verdade, vc jah tah montando o combo box, sem utilizar scriplet, o que você está fazendo, é popular um java.util.List no seu JSP, o que é totalmente ante-mvc. Vc precisa, popular esta lista no seu controller, enviar ao Action do Struts, e populá-lo no FormBean. Então, na sua jsp, vc usa o objeto do FormBean.
Ps.: BBCode é uma coisa legal. :slight_smile:

S e você já está usando Struts pq não cria uma action?

no caso de criar uma action…em que momento eu chamo essa action ?? e como eu faço para chamar ?.. pois no meu jsp eu ja chamo uma action para incluirMusica… neste caso, eu teria que chamar outra action para popular minha lista ??..

Bem, vc vai ter que entender o funcionamento do struts. Funciona assim:
No seu struts-config.xml, vc define a sua classe Action.
Na sua action, no método execute(), vc chama um método do seu controller, para retorna uma lista com seus registros.
Dpois vc pega essa lista e seta num atributo do FormBean. Daí no jsp, vc acessa esse form bean com as tags do struts e exibe-os num combo.
Abraço.

Cara, se vc não souber mesmo do struts, vai ser complicado vc fazer isso agora. Te aconselho a estudar o funcionamento teorico do struts antes de implementar. Abraço.

Blz.

Vamos lá… estou começando agora com struts. minha duvida e o seguinte:

NO MEU JSP EU TENHO QUE CARREGAR UM COMBO DINAMICO. SENDO QUE NO MESMO JSP EU JA TENHO UMA ACTION ONDE EU GRAVA UM REGISTRO. MINHA PERGUNTA E O SEGUINTE. EU TENHO QUE CRIAR UMA ACTION SO PARA POPULA MINHA LISTA E PREENCHER O COMBO ?

SEGUE ABAIXO O MEU CODIGO !!!

Tenho um jsp para incluirMusica(incluirMusica.jsp). action=/adicionaMusica

[code] <%@ taglib uri=“http://struts.apache.org/tags-html"prefix="html” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<%@page import=“java.util.List”%>
<%@page import=“loja.entidade.Cd”%>
<%@page import=“loja.dao.CdDAO”%>
<%@page import=“loja.hibernate.DAOFactory”%>
<html:html>
<head><title>Sistema de Teste do Struts</title></head>

<%
DAOFactory factory = new DAOFactory();
CdDAO dao = factory.getCdDAO();
List<Cd> listaCds = dao.listaTudo();
request.setAttribute("lista",listaCds);
%>

<html:form action="/adicionaMusica" >
CD:
<html:select property=“musica.cd”>
<html:option value=""> Selecione o CD</html:option>
<html:options collection=“lista” property=“id” labelProperty=“titulo” />
</html:select>

Nome:
<html:text property=“musica.nome”/>

<html:submit > Enviar Dados</html:submit>
</html:form>
</html:html>
[/code]

struts-config.xml

&lt;form-beans&gt;
		&lt;form-bean name="AdicionaMusicaForm" type="loja.struts.form.AdicionaMusicaForm"/&gt;
&lt;/form-beans&gt;


&lt;action-mappings&gt;	
			
		&lt;action path="/adicionaMusica" name="AdicionaMusicaForm" scope="request" type="loja.struts.action.AdicionaMusicaAction" &gt;			
			&lt;forward name="ok" path="/listaMusica.do" redirect="true"/&gt;
		&lt;/action&gt;			

&lt;/action-mappings&gt;	

Minha ActionForm

public class AdicionaMusicaForm extends ActionForm{
	
	private Musica musica = new Musica();
	
	
	
	public Musica getMusica() {
		return musica;
	}
	
	
}

Minha Action

public class AdicionaMusicaAction extends Action {

	@Override
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		// log
		

		Session session = new HibernateUtil().getSession();

					
		// dados do formulario Musica
		AdicionaMusicaForm formulario = (AdicionaMusicaForm) form;	

		
		Musica musica = formulario.getMusica();			
		
		session.beginTransaction();
		session.save(musica);
		session.getTransaction().commit();
		

		// ok...visualizacao
		return map.findForward("ok");
	}

Emerson,
Todas as ações dessa página podem estar na sua action.
No seu execute, vc tb chama o método de popular o valor no formBean. Vc pode usar o atributo parameter na tag action do struts, para executar determinados métodos na sua action, ao invéz de fazer tudo no execute. Dê uma pesquisada. Abraço.

Fabio,

vc não teria um exemplo ?

Emerson, infelizmente não cara. :frowning:
Dá uma procurada aí na net q vc acha…
Abraço.

Ps.: Acho q tenho um exemplo lá em casa, se quiser, eu posso dar um procurada a noite. T+!

[quote=fabiozoroastro]Emerson,
Todas as ações dessa página podem estar na sua action.
No seu execute, vc tb chama o método de popular o valor no formBean. Vc pode usar o atributo parameter na tag action do struts, para executar determinados métodos na sua action, ao invéz de fazer tudo no execute. Dê uma pesquisada. Abraço.
[/quote]

Procure sobre DispatchAction.

Sobre as comboBox, popule um atributo List no seu formBean (no caso com List) e na jsp chame

<html:select property="condominioIdCondominio"> <html:optionsCollection name="formBean" property="listaCds" label="titulo" value="id"/> </html:select>

Obs: vc esta usando Struts!! esqueça request.setAttribute. todos os valores devem estar no formBean previamente populados na ActionForm.