[RESOLVIDO] Struts 1.3.8 - como preencher tag <html:select> com o valor do bean?

3 respostas
J

Boa noite, galera!

Estou desenvolvendo uma aplicação simples com o Struts 1.3.8 e Hibernate.
Ela basicamente cadastra Filmes, estilos, participantes e funções.

Na aplicação tenho uma classe Filme que representa os Filmes e outra chamada Estilo que representa os possíveis estilos.
Um dos atributos da classe Filme é um objeto da classe Estilo.

[img]http://ildefonso-ferreira.sites.uol.com.br/struts/classes.jpg[/img]

O cadastro e edição de um filme é feita por uma jsp conforme o modelo abaixo:

[img]http://ildefonso-ferreira.sites.uol.com.br/struts/pagina.jpg[/img]

Para preencher a combo da JSP a minha classe FilmeAction tem um método que coloca uma lista de estilos na sessão (código abaixo) para que eu possa usá-los na combo.

public class FilmeAction extends FilmeBaseAction{
......
private void atualizaListas(HttpServletRequest request) {
......
		List<Estilo> estilos = estiloBO.listarEstilos(); 
		request.getSession().setAttribute("listaDeEstilos", estilos);
    }
......
}

A parte de gravação está funcionando perfeitamente mas, a edição não funciona como esperado.

Ao editar eu gostaria que o valor selecionado na combo fosse o estilo do objeto "filme" da sessão e não o primeiro item da coleção "listaDeEstilos" que também está na sessão.

Minha jsp:
.....
<html:form action="filme">
..............
Estilo:<html:select name="filme" property="estilo"><br>
    <html:options name="filme" collection="listaDeEstilos" property="descricao"/>
</html:select><br>
...................
</html:form>
.......

Minha classe FilmeActionForm

public class FilmeForm extends ActionForm{
	private Long id;
	private String nomePortugues;
	private String nomeOriginal;
	private Date dataAssistido;
	private Long ano;
	private Estilo estilo;
	private Set<Participante> participantes;
	private String observacao;
.............
	//Acessores para o estilo
	public String getEstilo() {
		return estilo.getDescricao();
	}
	
	
	public void setEstilo(String descricaoEstilo) {
		EstiloBO estiloBO = new EstiloBO();
		EstiloVO estilo = estiloBO.buscarEstiloPorNome(descricaoEstilo);
		this.estilo = estilo;
	}
.............
}

Já procurei em vários lugares mas não encontrei a resposta, se alguém puder me ajudar, por favor me ajudem....

3 Respostas

D

cara é um seguinte o codigo de um select é assim:

<html:select property="cdSituacaoImovel" style="width:170px" styleId="cdSituacaoImovel" styleClass="input" >                           
                           <html:option value=""></html:option>
                           <logic:present name="listaSituacaoImovel">
                               <html:options collection="listaSituacaoImovel" property="cdSituacaoImovel" labelProperty="nmSituacaoImovel"/>
                           </logic:present>
                       </html:select>

sendo que o cdSituacaoImovel é o atributo do bean, o listaSituacaoImovel e o request.getAttribute que vem da action e la na action eu passo o bean nesse request.getAttribute

J

Achei a solução...

O problema era que eu não estava conseguindo usar a el na tag .

Resolvi o problema alterando dois pontos da minha jsp:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page isELIgnored ="false" %>  //Adicionei essa linha para ativar a el
<HTML>
............
Estilo:<html:select name="filme" property="estilo"><br>
         <html:option value="${filme.estilo.descricao}"></html:option>//Adicionei esta tag para pegar o valor selecionado
         <html:options name="filme" collection="listaDeEstilos" property="descricao"/>
</html:select><br>

Valeu pela dica Diogo ... vou tentar usá-la também...

S

Cara… Pode me explicar os atributos desta tag?

Criado 5 de outubro de 2008
Ultima resposta 1 de dez. de 2010
Respostas 3
Participantes 3