Segue abaixo detalhes do laboratório 9 (Struts Validator) do curso de desenvolvimento de aplicações Web com Apache Struts:
1) Criar a classe EmpresaAction que estende de LookupDispatchAction
package curso.struts.visao.action;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.LookupDispatchAction;
import org.apache.struts.validator.DynaValidatorForm;
import curso.struts.modelo.dao.EmpresaDao;
public class EmpresaAction extends LookupDispatchAction {
public ActionForward pesquisar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// obtendo o formulario
DynaValidatorForm formulario = (DynaValidatorForm) form;
String nomeEmpresa = (String) formulario.get(“nome”);
// buscando a lista de empresa
List empresas = EmpresaDao.getInstancia().
getEmpresaPorNome(nomeEmpresa);
// salvando a lista na sessao
request.getSession().setAttribute(“empresas”, empresas);
// retornando para a lista
return mapping.findForward(“lista”);
}
protected Map getKeyMethodMap() {
Map mapa = new HashMap();
mapa.put(“acao.pesquisar”, “pesquisar”);
return mapa;
}
}
1a) Criar os arquivos de configuração (XML):
Copiar o validation-rules.xml do Lab09.zip para WEB-INF
Copiar o validation.xml do Lab09.zip para WEB-INF
2) Acrescentar no arquivo filtro.jsp a propriedade hidden:
<html:hidden property=”acao” value=”Pesquisar” />
3) Criar no Struts-config.xml um novo form:
<form-bean name=”EmpresaForm”
type=”org.apache.struts.validator.DynaValidatorForm”>
<form-property name=”nome” type=”java.lang.String”/>
</form-bean>
4) Criar no Struts-config.xml uma nova ação:
<action input=”/filtro.jsp” name=”EmpresaForm” parameter=”acao”
path=”/empresa” scope=”request”
type=”curso.struts.visao.action.EmpresaAction” validate=”true”>
<forward name=”lista” path=”/listaEmpresas.jsp”/>
</action>
5) Definir a validação do formulário no validation.xml:
<formset>
<form name=”EmpresaForm”>
<field depends=”required” property=”nome”>
<arg key=”empresa.nome” position=”0″ />
</field>
</form>
</formset>
6) Mudar no filtro.jsp a ação a ser executada pelo formulário:
Mudar de: <html:form action=”/pesquisaempresa”>
Para: <html:form action=”/empresa”>
7) Acrescentar no struts-config.xml o plugin do validator a ser usado:
<plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>
<set-property property=”pathnames” value=”/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml”/>
</plug-in>
8) Adicionar a lib Lib commons-validator-1.3.1.jar ao projeto Web:
A Lib commons-validator-1.3.1.jar deve estar no diretório WebContent/WEB-INF/lib
9) Acrescentar a propriedade no arquivo application.properties:
acao.pesquisar=pesquisar
10) executar a aplicação via URL:
http://localhost:8080/curso/filtro.jsp