Dúvida no Webwork

22 respostas
volnei

Consegui fazer o webwork funcionar, criei alguns exemplos e agora me pintou uma dúvida.

Qual o melhor lugar para persistir os objetos cujos valores são carregados de um form, imagino que eu poderia chamar um método de persistência do próprio objeto na página de sucesso, mais gostaria de ouvir a opinião de quem já trabalha ou conhece o webwork…

Ainda tenho uma dúvida não tão importante, como faço para trabalhar com os labels? Por exemplo o label em um textfield (obrigatório), sempre vem antes do campo seguido por dois pontos, como faço para colocá-lo em uma tabela, ou seja, separá-lo do campo?

Grato…

22 Respostas

smota

Hummm … depende :shock:

você deve persisti-los exatamente onde eles ficarão, se o form representa dados de um banco de dados, no banco, se representa informações de um serviço de diretórios, nele e assim por diante.

Quando os dados são só transitórios faça um wizard com form mesmo e o webwork vai preenchendo os campos do form pra você.

O Webwork é baseado em templates … pra você alterar o padrão crie um diretório “template/xhtml” e crie os tamplates, pra saber quais e ter uma base dentro do jar existe esse diretorio, extraia e faça a festa :lol:

[]s

volnei

Depois que li o meu post eu não percebi que não me expressei muito bem, eu queria dizer qual a melhor hora para executar a persistencia… :oops:

smota

Ops, falha minha :smiley:

entonces … a hora certa é “depois que os dados forem manipulados” ehehehe … ou seja, após o execute vc faz tudo que tem que fazer e persiste eles antes do return … nao tem muitas opcoes aqui.

ricardolecheta
"volnei":
Depois que li o meu post eu não percebi que não me expressei muito bem, eu queria dizer qual a melhor hora para executar a persistencia... :oops:
public class UsuarioAction implements Action
{
	private UsuarioVO usuario = new UsuarioVO();

	public String execute() throws Exception
	{
		// aqui o usuario  esta populado
		// é  gravar
		return SUCCESS;
	}
}

o webwork vai popular a sua classe de model, ai é só mandar pro banco.

volnei

Obrigado mais uma vez pessoal !!

Estou tentando utilizar a validação através de arquivos XML mais estou com dificuldades, criei o arquivo meuBean-validation.xml, verifiquei a sintaxe através de exemplos, mais o ww está ignorando a presença do validator, alguem sabe oque eu posso estar fazendo errado? Preciso de alguma configuração extra??Ou algum método no Action…

ricardolecheta

você precisa declarar o interceptor que faz a validação…

volnei

Mais isso não é só em caso de Actions?

ricardolecheta

bem, a que eu sei é fazer na Action, entao o arquivo é:
NomeAction-validation.xml,

como você está fazendo?

smota

Hummm … como?

Não há validações fora da execução de uma action … o controler (webwork) é baseado nelas.

Se você tem o interceptor aplicado veja que o xml tem que esta na mesma package da action.

volnei

“smota”:
Hummm … como?

Não há validações fora da execução de uma action … o controler (webwork) é baseado nelas.

Se você tem o interceptor aplicado veja que o xml tem que esta na mesma package da action.

Não é bem fora da execução da action e sim em uma classe que a action instacia!!

Meu campo se chama “user.name” esse valor é colocado dentro da classe User da minha action…

Quando envio os dados para uma action ela instancia um objeto certo?!, quero que a validação seja em cima desse objeto.

Falei besteira?!?

volnei

Foi daqui que eu tirei…

:?

smota

Você está utilizando actions ModelDriven?

Acho que esse é o único modo de trabalhar com um objeto interno na action.

Sem o model driven todas as propriedades da action devem estar na própria classe da action pra poder utilizar algumas facilidades.

Só na view você é capaz de navegar usando a notação que você citou porque o Webwork usa a OGNL …

volnei

Qual a sua opinião com relação a esse modelo? ele é utilizado? Existem desvantagens? :frowning:

smota

Não conheço nenhuma desvantagem … tb não tem vantagem se você só tem uma action pra cada modelo.

Eu uso bastante porque tenho action diversas pro mesmo modelo (exemplo: varias alteracoes de status, cada uma de um modo no mesmo modelo).

volnei

Se eu não utilizar este modelo, todos os meus beans seriam actions? Isso não é errado?

Para desenvolver uma aplicação simples, como por exemplo um fórum, qual você aconselharia?

ricardolecheta

Se na sua Action tiver um bean Usuario, voce vai acessar as propriedades de usuario assim: usuario.nome, usuario.email.

Mas se a Action implementar ModelDriven significa que você pode acessar as propriedades diretamente, somente nome e fone, isto porque você é obrigado a implementar o método getModel() que retorna sua classe de model…

volnei

“ricardolecheta”:
Se na sua Action tiver um bean Usuario, voce vai acessar as propriedades de usuario assim: usuario.nome, usuario.email.

E aí como eu valido esse bean Usuario, já que ele não faz parte da action?

“ricardolecheta”:

Mas se a Action implementar ModelDriven significa que você pode acessar as propriedades diretamente, somente nome e fone, isto porque você é obrigado a implementar o método getModel() que retorna sua classe de model…

Como assim acessar diretamente? Você quer dizer que meu próprio bean é a action?

ricardolecheta
"volnei":
E aí como eu valido esse bean Usuario, já que ele não faz parte da action?
o Usuario é um atributo na sua Action, então faz parte da Action.

Para acessar os atributos desta action você acessa como "teste" e como "usuario.nome" , "usuario.fone".

public class UsuarioAction implements Action 
{ 
   private String teste;
   private UsuarioVO usuario = new UsuarioVO(); 

// get/set

quando você fizer "usuario.nome" o WebWork faz getUsuario().getNome().

"volnei":
Como assim acessar diretamente? Você quer dizer que meu próprio bean é a action?

se implementar ModelDriven, para acessar o nome do usuário você não precisa fazer "usuario.nome", basta acessar diretamente como "nome".
Isto porque você implementou o método getModel() e o WebWork sabe que o bean é o Usuario.

blz?

volnei

Entendi, valeu!!!

R

Tenho trabalhado só com Struts e uma coisa chatinha no Struts é a replicação de dados que a ActionForm causa, então pensei em fazer com que o ActionForm popule diretamente meu VO. Só que tenho um probleminha, quando tenho campos que são objetos como Date e outros objetos fica complicado, pois tudo é String no request e complica na hora de converter. Esse esquema de ActionModelDriven do WebWork ja trata disso ou tem esse mesmo tipo de problema???

smota

Na verdade o Webwrok trata as conversões mesmo que você não utilize o ModelDriven, de qualquer modo se utiliza-lo os dados tb serão convertidos :o

Além das conversões padrão você pode registrar seus próprios conversores e parametriza-los apenas usando arquivos de configuração … assim não há limites pras conversões “automágicas” o que é uma mão na roda.

Nunca usei o Struts, mas acredito que deva ter um esquema desse tb pq eh meio básico um framework precisar disso :wink:

R

Ter até que tem, mas é bem simples para o que eu preciso. Ele converte beleza para tipos primitivos, popula os objetos compostos só que alguns casos como um objetos Date fica mais complicado.

Criado 29 de dezembro de 2003
Ultima resposta 30 de dez. de 2003
Respostas 22
Participantes 4