Action Form: Logo após o recebimento da requisição o ActionServlet delega ao RequestProcessor a responsabilidade de extrair os parâmetros da requisição e popular um ActionForm.
• Os ActionForms são responsáveis por validar se os atributos da requisição são sintaticamente corretos e eventualmente disparar exceções avisando o usuário final.
• O desenvolvedor deve especializar um ActionForm e sobrescrever os métodos reset e validade.
• Além disso, a sua classe de ActionForm deve conter os atributos que correspondem aos campos do form html.
package br.com.softech;
import org.apache.struts.action.*;
public class FuncionarioForm extends ActionForm {
private String nome;
private Integer idade;
//Setters and getters;
public void reset( ActionMapping mapping, HttpServletRequest req ) {
this.nome = null;
this.idade = null;
}
public ActionErrors validate( ActionMapping mapping, HttpServletRequest req ) {
ActionErrors errors = new ActionErrors( );
if( nome == null || idade == null ) {
errors.add( “errNomeIdade”, new ActionError(“nomeIdade.required”) );
ActionForward: A classe ActionFoward é responsável pelo mapeamento lógico das páginas do sistemas, evitando assim, o uso do nome físico (URI) dento do código.
• O uso eficiente do ActionFoward facilita a manutenção do sistema.
• ActionFowards são declaradas dentro do strutsconfig.xml em dois níveis (Global e Action), sendo que as
declaradas dentro das ações tem maior precedência.
ActionError e ActionMessages: Responsáveis pelo armazenamento de informações sobre mensagens de erro, anomalias do sistema (ActionError) e avisos (ActionMessage).
• Geralmente é utilizada dentro de ActionForm’s (erros de sintaxe) e Action’s (erros de sistema).
• Possuem grande integração com os serviços de internacionalização e tag libraries
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ((this.nome == null) || (this.nome.lenght()<1)) {
errors.add(“nome”, new ActionError(“nome.required”));
}
return errors;
}
Internacionalização:
• O Struts oferece suporte a internacionalização através da classe MessageResources.
• A classe MessageResources é populada em tempo de execução pelo RequestProcessor de acordo com as informações registradas no struts-config e a língua/região utilizada pelo usuário final.
• Largamente utilizadas pelos ActionErrors e tag libraries do Struts.
• A implementação padrão usa arquivos .properties, mas especializações podem ser adicionadas para atender outros cenários.
• Configurando a I18N no arquivo struts-config.xml: