Não consigo utilizar request.setAttribute corretamente
13 respostas
F
filipeinacio
Pessoal, estou estudando Struts pela apostila da Caelum fj21 e encontro o seguinte problema.
CLASSE ACTION
publicclassListaContatosActionextendsAction{publicActionForwardexecute(ActionMappingmap,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{// pesquisa no banco de dados a lista completaList<Contato>lista=newContatoDAO().getLista();request.setAttribute("contatos",lista);// ok... para onde ir agora?returnmap.findForward("lista");}}
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><c:forEachvar="contato"items="${contatos}">
${contato.id} - ${contato.nome} <br></c:forEach></body></html>
Quando a página é carregada no broswer, apenas é exibido o conteúdo:
${contato.id} - ${contato.nome}
parece que ele não executa o forEach, e não consegue recuperar a lista passada pelo request.setAttribute()…
Realmente vc fez certo mas na parte da visualização esta errado vc esta imprimindo a String ${contato.id} - ${contato.nome} e não objeto para isso utilize EL <c:out value=objeto />
então ! eu já tentei fazer isso e mesmo assim continuo com o problema !!
E
Euler_Homero
Tenta colocar o jars do jstl.jar e standard.jar no teu classpath.
F
filipeinacio
já estão la !
eu estou utilizando o Tomcat versão 6.0.9
imagino que esse problema não seja causado pelo fato de utilizar strut… de qualquer forma não consigo entender o porque não funciona, sendo que está exatamente igual ao criado na apostila…
Pessoal. é alguma coisa relacionada ao Struts… eu criei aki um exemplo semelhante porem ao inves de criar um Action, eu fiz uma classe extendida do httpservllet e utilizei o RequestDispacher pra chamar a pagina JSP
dessa maneira funcionou !! agora eu não sei onde esta o problema no struts
K
kallunga
Eu tb estou executando o mesmo exemplo e tenho o mesmo prob. Já tentei tudo q foi citado acima e nada…
Tenho uma TagLib funcionando sem o uso do Struts.
Tá aki meu código da Action que não funciona corretamente:
O comando está imprimindo no console a quantidade corretamente. Mas este request é q é o problema. Por que qdo ele entra em ação, está aparentemente desabilitando TagLibs…
Acho q se a listagem estivesse sendo passada vazia para o request, ele não entraria no loop para imprimir " ${contato.id} - ${contato.nome} " na tela em vez de processá-lo devidamente como TagLib.
Se alguém puder ajudar fico agradecido.
Obrigado
K
kallunga
é, consegui…
Caso esse passo a passo funcione com vc podemos concluir q é um bug no arquivo web.xml que vem no “struts-blank.1.3.8.war”.
Certamente vc fez a importação deste arquivo.
Originalmente ele está assim no começo dele:
<?xml version="1.0" encoding="ISO-8859-1" ?><!-- Vários de comentários...--><!DOCTYPE web-app (View Source for full doctype...)><web-app>
Vá no seu web.xml e exclua as linhas que estiverem acima de(acima não incluindo esta linha a seguir)
<display-name>NomedaAplicação</display-name>
Depois inclua as seguintes linhas no começo do arquivo:
Espero que funcione.
Kra, comigo ficou redondo MAS NÃO SEI EXPLICAR TECNICAMENTE AS MUDANÇAS.
Tem tanta coisa na vida q a gente faz e não sabe o porquê… está é só mais uma… Sou iniciante mas gostaria de ter uma explicação técnica. Caso alguem se habilite ficarei agradecido.
Obrigado.
D
drielli
ok
S
sh1
Eu editei o web.xml e funcionou. Não precisa editar a taglib da jsp
S
sh1
Estudando na web descobri o motivo.
Esta linha:
faz com que nossa web.xml que define a estrutura de nossa aplicação web entender o código do jsp. Caso esta linha não esteja adicionada o código ${variavel} não significa nada para o xml, visto ser nativo do jsp.