Estou fazendo um esquema para atualizar um cadastro.
Atraves do ID do cliente, eu faço um select no banco e passo pra jsp, um objeto com os dados do cliente. Ate aqui tudo ok.
Minha dúvida é a seguinte, no jsp, atraves da taglib “html” do struts, gostaria de setar o texto de cada campo do formulário com os valores equivalentes no objeto.
Gostaria que vcs me ajudassem em como receberei este objeto na jsp, creio que seja atraves da Expression Language, mas naum sei como. E como preencherei o formulário.
Rapaz que eu saiba va nao vai pdoe fazer isso nao, vc vai ter que fazer
ClienteForm
com os atributos nome, email, cidade e ai no jsp vc coloca nome, email, cidade, quando vc preecher o form do strtus que for para o jsp ele preeche automaticamente.
Ate onde eu sei de strtus vc nao pdoe colocar um objeto tipo Pessoa dentro do form e assim seta-lo no jsp como pessoa.nome, vc teria que fazer pessoaNome como String no form e no jsp colocaria pessoaNome tb.
Se eu estiver errado que alguem me corrija.
rmarin
Ah tá, não tinha reparado nos pontos ‘.’
marcelo_mococa
ok.
mas isso é pra gravar, certo?
acho q a solução postada acima da certo, mas tem como fazer isto sem scriplets?
rodrigo_corinthians
No form aceita sim objetos do seu negócio, fica meio tosco o código mas funciona.
Calma rodrigo, vamo ver a melhor solução, eu nao sabia do que vc falou, vou testar mais tarde, mais se o que vc falou é verdade, o codigo deveria estar funcionando, uma vez que uma das funcionalidades do struts é este preenchimento automatico.
Marcelo, passe o codigo do seu action o qual vc esta preenchendo o form.
Pronto preenha os campos do seu form, o correto seria agora sua tela vim toda reenchida, de uma olhada no objeto BeanUtils da jakarta, ele vai ser muito util nesse lance de preencher form com vo e vo com form.
Pior que não estou conseguindo acessar o WEB-INF lá da empresa :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Não lembro como monta o <action> direito no struts-config.
afamorim
Rapa esse neogcio ta um pouco estranho…
quais campos vc quer preencher no jsp??
como vc pdoe quere que o struts preencha um campo no jsp se esse nem mesmo existe no form?
os campos que vc quer que o struts preencha, tem que existir tanto no jsp como no form, assim vc preenche o form e o struts faz o resto, quanto ao action tem um campo que vc tem que preencher com request, nao lembro o nome agora, para que o mesmo coloque o form no request e possa preencher.
marcelo_mococa
vou postar todos os codigos pra ficar mais organizado.
Tente usar expression language como voce mesmo sugeriu. Funcionou? Deve funcionar. Se nao funcionar poste aqui o stacktrace do erro. Ficou vazio? Se ficou vazio (ULTIMA OPCAO) voce vai ter que fazer o seguinte numa acao ANTES de acessar o seu formulario na pagina que pesquisa os dados no banco, colocar o cliente retornado dentro do formulario recebido e mante-lo na session (entenda: HORRIVEL pois nao permite duas janelas ao mesmo tempo sem possiveis bugs de concorrencia).
4.Rodrigo, o codigo nao fica tosco nao. Eh muito melhor assim. Tosco e improdutivo mesmo eh redigitar o campo nome, email etc e criar uma classe de DTO como o ActionForm IDENTICA a sua classe de modelo. Da maneira sugerida por outros toda vez que voce cria um campo novo no seu modelo voce deve replica-lo no seu ActionForm, isso eh no minimo grosseria.
Jamais usar sessao para atribuir valores de request. Se o cara abrir duas janelas voce vai zuar muita coisa
Beanutil sucks nesse caso pq significa que voce esta replicando seu VO no form. Nao replique objetos. Nao faca coisa a mais do que o necessario. Nao perca tempo. Faca coisas simples.
essa terceira opção é colocar o cliente que o usuário quer atualizar na seção?
A
alots_ssa
Marcelo, no seu struts-config, na ação o atributo name tá = AtualizarClienteForm e no seu formBean vc o chamou de AtualizaClienteForm, ou seja, sem o R. Ele não consegue preencher nada do seu form. Vê se eh isso.
Falou cara,
Alberto
afamorim
Meu velho, eu aconselho a vc fazer uma pagina simples e ir colocando campo a campo e no actione fazendo o seguinte
System.out.println(form.getCampo());
p/ vc ir descobrindo o que esta acontecendo
de uma passada tb no www.apache.or, para dar uma olhada no tutorial do struts, pois vale a pena e vc vai ganhar muito tempo.