Estou trabalhando em um formulário que tem cinco campos e todos fazem parte do objeto Usuario.
Minha dúvida é:
É melhor setar no próprio formulário o atributo do objeto:
<s:textfield name="usuario.nome" value="nome">
ou setar o nome em uma string e depois, já na Action, setar esse valor no objeto Usuario:
<s:textfiel name="nome" value="nome">
Na Action fazer algo do tipo:
private String nome;
public String getNome ...........
public void setNome .............
public String salvar() {
usuario.setNome(nome);
}
Acho que para validar os campos com o struts validation é melhor enviar a String e depois setar no objeto.
Qual a maneira correta?
Eu faço da primeira maneira
E para fazer a validação, vc pode fazer do mesmo jeito na Action.
Olha o meu exemplo… Peguei da apostila da Caelum:
Validations(requiredStrings={
@RequiredStringValidator(fieldName="tarefa.descricao", message="Valor Obrigatório")}
)
public class AdicionaTarefasAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Tarefa tarefa;
@Action(value="adicionaTarefa", results={
@Result(name="ok", location="/tarefa-adicionada.jsp"),
@Result(name="input", location="/formulario-tarefas.jsp")}
)
public String execute(){
System.out.println("Entrou no adicionaTarefa");
return "ok";
}
public Tarefa getTarefa() {
return tarefa;
}
public void setTarefa(Tarefa tarefa) {
this.tarefa = tarefa;
}
}
A validação eu faço passando o objeto.atributo:
@RequiredStringValidator(fieldName="tarefa.descricao", message="Valor Obrigatório")
Sacou?