Boa prática

5 respostas
salmaox

bom dia,

Tenho um campo no formulário "UF" onde eu exibo os estados na jsp através de um foreach. Gostaria de saber se há alguma outra maneira de exibir na view, ou o jeito que eu fiz está bom? Estou utilizando o VRaptor 3.

classe combo:

public class Combos {
	
	public String estados(String sigla){
		String retorno;
		String[] estados = {"--","AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MG","MT","MS","PA","PB",
				"PR","PE","PI","RJ","RO","RN","RS","RR","SC","SE","SP","TO"}; 
		retorno = "";
		try{
			for(int i = 0; i < estados.length; i++){
				if(estados[i].equals(sigla)){
					retorno = retorno + "\n<option selected value=\"" + estados[i] + "\">" + estados[i] + "</option>";
				}else{
					retorno = retorno + "\n<option value=\"" + estados[i] + "\">" + estados[i] + "</option>";
				}
			}			
			return retorno;			
		}catch (Exception e) {
			e.printStackTrace();
			return "nada";
		}	
	}
}
Classe CursosController
@Path("/novo")
	public void novo(){
		Combos combo = new Combos();
		this.result.include("uf",combo.estados(""));
        this.result.include("instituicao",combo.instituicoes(""));
		this.result.include("atuacao",combo.atuacao(""));
	}
View novo.jsp
<select name="curso.uf" class="selectform">
      <c:forEach items="${uf}" var="curso">
		<option value="${curso}"></option>  		
      </c:forEach>
</select>

Obrigado.

5 Respostas

fernandosavio

coloque seu codigo entre as tags CODE e /CODE (não esqueça os [])

Lucas_Cavalcanti

não monte html na parte java, deixe pro <c:foreach fazer isso lá no jsp

salmaox

Não entendi, você está se referindo a classe Combos?

obrigado

Rafael_Guerreiro

Retorne no método somente o array, desta maneira:

public class Combos {  
      
    public String[] estados(){   
        String[] estados = {"--","AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MG","MT","MS","PA","PB",  
                "PR","PE","PI","RJ","RO","RN","RS","RR","SC","SE","SP","TO"};   
        return estados;
    }  
}
Então vc faz o include:
@Path("/novo")  
    public void novo(){  
        Combos combo = new Combos();  
        this.result.include("listaUf",combo.estados());  
        this.result.include("instituicao",combo.instituicoes(""));  
        this.result.include("atuacao",combo.atuacao(""));  
    }
e então, deixa que o forEach faz todo o trabalho:
&lt;select name="curso.uf" class="selectform"&gt;  
      &lt;c:forEach items="${listaUf}" var="uf"&gt;  
        &lt;option value="${uf}"&gt;${uf}&lt;/option&gt;            
      &lt;/c:forEach&gt;  
&lt;/select&gt;
salmaox

entendi, deu certo aqui

muito obrigado

abs

Criado 1 de setembro de 2011
Ultima resposta 1 de set. de 2011
Respostas 5
Participantes 4