VRaptor 4 (Excluir alguns Set's, para que não sejam acessados por um form da JSP)

8 respostas
java
K

Gostaria de tirar uma dúvida em questão ao uso de classes em controladores do VRaptor 4.

Possuo uma classe com 7 atributos, sendo que 6 são carregados dentro do form na index utilizando a carga em seu próprio objeto quando enviado o formulário para o controlador name = “user.name” como exemplo.

Agora na questão do sétimo atributo, não gostaria que o mesmo fosse para o bean, pois simplesmente uma modificação no formulário utilizando o console do navegador, faria com que pudesse ser modificado pelo formulário.

Anotei os 2 métodos tanto o set quanto o get como @Transient do pacote “bean” e não do “persistence”, mais essa tentativa não teve existo.

Alguém poderia me informar qual o modo utilizado para excluir um atributo ou método desta carga nos controladores? Eu utilizo a carga direta no objeto para fazer a validação direta com o sistema usando o @Valid.

Obrigado.

Edit: ----

Uma forma que encontrei foi modificando o método set do determinado atributo para “_setName” exemplo, retirando o método da convenção utilizada no jsp. Mais acredito que tem uma forma correta para se fazer esta implementação…

8 Respostas

aix

Não faça com submit, use AJAX, assim você envia na requisição o que desejar e ainda pode usar os outros métodos HTTP como PUT, DELET, etc…

K

Mais o usuário no navegador continuaria podendo adicionar mais um campo e modificando o código do js na página não?

guivirtuoso

Mas como o colega @aix disse… voce monta seu json antes de enviar e manda via ajax… ai tudo certo. Se o usuario modificar o form via inspector… nao tem problema… pois aquele campo nao estaria sendo adicionado no JSON que você esta montando antes de enviar. :wink:

K

Acaba ficando um pouco mais viável então, receber os parâmetros separados na chamada do controller e não o objeto em questão. Se não eu acredito que vai gerar mais e mais código solto na página.

guivirtuoso

e se tu deixar a input sem name definido… e apenas carregar o value="${entidade.atributo}"

nao rola?

Outra coisa… o readonly e disabled tbm da de modificar via inspector? nao cheguei a testar…

aix

Não precisa enviar parâmetros soltos, monta um JSON como o Guivirtuoso comentou mapeando para seu obejto no controller, um pattern que me ajuda bastante é usar DTO´s desacoplando completamente a view do controller, uso e abuso dos construtores no DTO assim consigo que o mesmo objeto possa ser utilizado em views diferentes com parâmetros diferentes, também não uso sets no meu DTO, só tenho métodos get(), meus DTO´s são imutáveis, fortemente tipados, um DTO pode ainda ser composto de outros DTO´s e ainda posso fazer uso da API bean validator para realizar validações, abraços.

K

Hoje o uso de ajax com json está tão grande que eu acho mais viavel desacoplar completamente a aplicação (site no caso) do servidor e montar tudo restfull. No caso que já está mapeando objetos entrando no controller, utilizando somente chamadas com envio e retorno json, acaba que desacoplar as paginas da aplicação do servidor é o mais correto neh? Até pra crescimento futuro e utilizar a aplicação em si, em outros sistemas e não só neste que desenvolvo.

guivirtuoso

Isso ai. :wink:

Criado 11 de fevereiro de 2016
Ultima resposta 11 de fev. de 2016
Respostas 8
Participantes 3