Struts - Formulario de Alteração

Galera, é o seguinte.
estou fazendo um crud aqui e estou com problemas na alteração de dados
estou passando um bean atravez do form
Action: aqui está tudo ok.

cadastroForm.setCadastro(DAO.findDados(cadastro)); return mapping.findForward("alterarCadastro");
dentro de cadastro existe algumas campos que quero pegar na jsp

ja tentei de tudo

<bean:define id="cadastro" value="cadastroForm" property="cadastro" scope="page"/>

<c:set var="cadastro" value="cadastroForm" property="cadastro" scope="page"/>

tento recuperar informação aqui.

<html:text property="cadastro.nome"/>
sempre retorna um erro do tipo não encontrar a bean ou o campo.
erro:

javax.servlet.ServletException: Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774) org.apache.jsp.jsp.cadastro.alterarCadastro_jsp._jspService(alterarCadastro_jsp.java:285) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085) org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:627) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

quando retorno uma lista de registro consigo recuparar facilmente, agora quando retorno atraves deste setCadastro não consigo por nada deste mundo!
alguem pode da um help ae?

Verifique se a sua tag html:text está dentro de tags html:form</html:form>.

Outra coisa, na sua action, coloque o que você quiser passar para a jsp no request, por exemplo:

request.setAttribute("cadastro", cadastroForm);Assim as tentativas que você postou vão funcionar.

Blz? Flw! :thumbup:

Um site interessante, sobre erros comuns do struts:

http://www.geocities.com/Colosseum/Field/7217/SW/struts/errors.html

[quote=von.juliano]Verifique se a sua tag html:text está dentro de tags html:form</html:form>.

Outra coisa, na sua action, coloque o que você quiser passar para a jsp no request, por exemplo:

request.setAttribute("cadastro", cadastroForm);Assim as tentativas que você postou vão funcionar.

Blz? Flw! :thumbup: [/quote]

opa, vlw, realmente tinha esquecido do html:form mas ainda não funcinou.

não quero passar o form setando um atributo no request, nas outras paginas funciona sem isso, principalmente com listas, vou de mostrar uma parte do codigo que funciona. :slight_smile:

[code]<c:if test="${not empty cadastroForm.listaCadastros}">
<c:forEach items="${cadastroForm.listaCadastros}"
var=“cadastro”>











</c:forEach>

Nome Idade
<c:out value="${cadastro.nome}" />  <c:out value="${cadastro.idade}" />
[/code] aqui funciona lindo.. rss agora quando tento fazer isso sem lista, da pala. o que quero fazer é mais ou menos isso: [code]
Nome Idade
[/code] acho que para funcionar seria algo do tipo [code][/code] mas não funciona :>

estou quase mudando pra uma lista e pegar o primeiro registro, mas acredito que essa não seja a meneira correta. help!! :>

[quote=igor.cardoso]não quero passar o form setando um atributo no request, nas outras paginas funciona sem isso

acho que para funcionar seria algo do tipo

<c:set var="cadastro" value="cadastroForm" property="cadastro" scope="page"/>

Amigo, acho que não estou entendendo o que você está tentanto fazer. Como você passa os valores nas outras páginas, se não utiliza o request? Em algum lugar você tem que colocar as informações para pegar na página! :wink:

Coloque o código da sua action, acho que seu problema não está claro.

Flw! :thumbup:

[quote=von.juliano][quote=igor.cardoso]não quero passar o form setando um atributo no request, nas outras paginas funciona sem isso

acho que para funcionar seria algo do tipo

<c:set var="cadastro" value="cadastroForm" property="cadastro" scope="page"/>

Amigo, acho que não estou entendendo o que você está tentanto fazer. Como você passa os valores nas outras páginas, se não utiliza o request? Em algum lugar você tem que colocar as informações para pegar na página! :wink:

Coloque o código da sua action, acho que seu problema não está claro.

Flw! :thumbup: [/quote]

Fala Von.Juliano, primeiramente muito obrigado pela ajuda.

descobri algumas coisas ontem apos apanha muito.
minha aplicação funciona assim:
se eu setar algo no form dentro da action:

cadastroForm.setCadastro(DAO.findDados(cadastro)); return mapping.findForward("alterarCadastro");
quando utilizo o

<html:form action="/cadastro.do"/> <html:text propert="cadastro.nome"/>
ele ja acha a proriedade.

continuando. ontem quando estava debugando verifiquei e não conseguia puxar os dados depois de setalos, mesmo na action.

como ja estava puto, mudei a maneira de usar isso, utilizei sua dica.

ai ficou assim:

cadastro.setId(request.getParameter("id"));
request.setAttribute("cadastro", DAO.findCadastro(cadastro));
return mapping.findForward("alterarCadastro");

no jsp
sem utilizar html:form
apenas

<form action="cadastro.do?metodo=alterarCadastro">
<table>
<tr>
<td>Nome</td>
</tr>
<tr>
<td><input type="text" id="nome" name="nome" value="${cadastro.nome}"><input text="submit" value="Salvar"></td>
</tr>
</form>

enfim, resolvi o problema de outra maneira, vlw pelo help!