Problemas ao popular um ComboBox (com o fucking <html:select>)

4 respostas
felipeguerra

Pessoal,

Estou recorrendo ao site como última alternativa, pois não consigo entender o que acontece com a minha aplicação.

É o seguinte, estou utilizando o Struts, mais especificamente a tag html:select, na hora de popular não gera nenhum erro, porém, o combo vem com x vezes ( x = MyList.size() ), um único dado…

Os códigos são:

public class ConsultaAction extends Action {

public ActionForward execute( ActionMapping map, 
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response ) {

	ActionForward forward = new ActionForward();

	try {
		
		String nomeCredor = request.getParameter( "credor" );
		ConsultaForm consulta = (ConsultaForm) form;
		Collection<ConsultaForm> comboList = new ArrayList<ConsultaForm>();
		
		consulta.setNomeCredor( nomeCredor );
		
		if( nomeCredor.equals("finasa") ) {
			
			consulta.setTipoRelatorio( "Seleção Analítico " );
			consulta.setLinkRelatorio( "/creditone/index.do?relatorio=finasa&type=analitico" ); 
			comboList.add( consulta );
			consulta.setTipoRelatorio( "Seleção Analítico 2" );
			consulta.setLinkRelatorio( "/creditone/index.do?relatorio=finasa&type=analitico2" );
			comboList.add( consulta );
			consulta.setTipoRelatorio( "Seleção Analítico 3" );
			consulta.setLinkRelatorio( "/creditone/index.do?relatorio=finasa&type=analitico3" );
			comboList.add( consulta );
			
			
		}else if( nomeCredor.equals("bv") ) {

			consulta.setTipoRelatorio( "Seleção Analítico" );
			consulta.setLinkRelatorio( "/creditone/index.do?relatorio=bv&type=analitico" );
			comboList.add( consulta );
			
		}else if( nomeCredor.equals("daycoval") ) {

			consulta.setTipoRelatorio( "Seleção Analítico" );
			consulta.setLinkRelatorio( "/creditone/index.do?relatorio=daycoval&type=analitico" );
			comboList.add( consulta );

		}
		
		request.setAttribute( "comboList" , comboList );
		
		forward.setPath( "/relatorio.do" );
		
	}catch( Exception e ) {
		e.printStackTrace();
		
	}

	return forward; 
}

}

e

.
.
.
<html:form action="/initial" method=“post”>


Teste

<html:select property=“tipoRelatorio” styleClass=“selectBox”>
<html:options collection=“comboList” property=“tipoRelatorio” />
</html:select>


</html:form>

4 Respostas

J

Tente assim:

<html:select property="tipoRelatorio" styleClass="selectBox"> 
<html:options collection="comboList" property="tipoRelatorio" labelProperty="linkRelatorio"/> 
</html:select>

O que falta é a utilização do labelProperty. Faça a alteração necessária conforme a estrutura que você utiliza, no caso um ArrayList de classe.

labelProperty é o que será exibido no combo box e property é o que será utilizado como value.

felipeguerra

Juliano, muito obrigado pela resposta, só que vc vai ter que me desculpar pelo esquecimento.

Era pra eu ter postado esse trecho de código exatamente como vc postou, ou seja, mesmo com todas essa recomendações o erro persiste!

Valeu, mas outra alternativa?

felipeguerra

Para agregar mais alguma coisa no entendimento do problema, vou mostrar o resultado do Combo já populado!

felipeguerra

PROBLEMA RESOLVIDO!!!

Era tão simples que nem me dei conta, só criei mais de um objeto (ConsultaForm) e add na Collection!!!

Criado 26 de março de 2007
Ultima resposta 26 de mar. de 2007
Respostas 4
Participantes 2