Duvida com validação do struts

4 respostas
jemoliveira

pessoal não manjo muito de struts
então preciso de uma ajuda

é sobre a parte de validação

tenho uma pagina com dois combos e um campo testo, nenhum desses campos podem chegar nulos

então o que eu devo estar fazendo de errado

meu form
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		idItem = StringUtils.trimToNull(idItem);
		formaPagto = StringUtils.trimToNull(formaPagto);
		frete = StringUtils.trimToNull(frete);
		bonus = StringUtils.trimToNull(bonus);
		observacoes = StringUtils.trimToNull(observacoes);
		observacoesNotaFiscal = StringUtils.trimToNull(observacoesNotaFiscal);

		ActionErrors erros = new ActionErrors();
		
		if (coordenador == null || coordenador == "")
			erros.add("coordenador", new ActionError(
					"error.operational.general",
					"O Campo coordenador é obrigatório."));
		
		if (vendedor == null || vendedor == "")
			erros.add("vendedor", new ActionError(
					"error.operational.general",
					"O Número do vendedor é obrigatório."));
		
		if (cnpj == null || cnpj == "")
			erros.add("cnpj", new ActionError(
					"error.operational.general",
					"O Número do CNPJ é obrigatório."));

minha pagina jsp

<%-- Tabela de erros e informações --%>
	<%-- ------------------------------------------- --%>
	<logic:messagesPresent>
	<br />
	&lt;table class="table-ligth"
	       border="0" cellpadding="0" cellspacing="2" width="98%" align="center"&gt;
		&lt;tr&gt;
			&lt;td align="center" style="width: 70px;"&gt;
				<img />
			&lt;/td&gt;
			<ul>
			&lt;td class="table-cel-error"&gt;
				&lt;html:messages id="error" message="false"&gt;
					<li>&lt;bean:write name="error"/&gt;</li> 			
				&lt;/html:messages&gt;
			&lt;/td&gt;
			</ul>
		&lt;/tr&gt;
	&lt;/table&gt;
	&lt;/logic:messagesPresent&gt;
	&lt;%-- ------------------------------------------- --%&gt;

4 Respostas

Hayan

coloque sua Action aqui por favor, sinão verefeque seu struts-config.xml e a input da Action.
ex : <action attribute="suaForm" input="/index.jsp" name="suaForm" path="/web" scope="request" type="com.struts.action.SuaAction"> <forward name="success" path="/success.jsp" /> </action>

fluw

jemoliveira

cara não vi nada de errado, mais como não conheço muito de struts

vai ai meu struts-config

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"&gt;

&lt;struts-config&gt;

	&lt;!--  Form Bean Definitions  --&gt;
	&lt;form-beans&gt;
		&lt;!-- Logon form bean --&gt;
		&lt;form-bean name="LogonForm" type="com.claro.teleretencao.web.form.LogonForm"/&gt;
		&lt;form-bean name="EscolheRegionalForm" type="com.claro.teleretencao.web.form.EscolheRegionalForm"/&gt;
		&lt;form-bean name="ConsultaOrdemVendaForm" type="com.claro.teleretencao.web.form.ConsultaOrdemForm"/&gt;
		&lt;form-bean name="ConsultaClienteForm" type="com.claro.teleretencao.web.form.ConsultaClienteForm"/&gt;
		&lt;form-bean name="PesquisaProdutoForm" type="com.claro.teleretencao.web.form.PesquisaProdutoForm"/&gt;
		&lt;form-bean name="ProdutoForm" type="com.claro.teleretencao.web.form.ProdutoForm"/&gt;
		&lt;form-bean name="OrdemVendaForm" type="com.claro.teleretencao.web.form.OrdemVendaForm"/&gt;
     	&lt;form-bean name="EfetuaPagtoForm" type="com.claro.teleretencao.web.form.EfetuaPagtoForm"/&gt;
		&lt;form-bean name="EstornoForm" type="com.claro.teleretencao.web.form.EstornoForm"/&gt;
	&lt;/form-beans&gt;

	&lt;!-- Global Forward Definitions --&gt;
	&lt;global-exceptions&gt;
		&lt;exception type="java.lang.Exception" key="error.general" path="/Error.do" handler="com.claro.teleretencao.web.ApplExceptionHandler" /&gt;
		&lt;exception type="com.claro.commons.LogonInvalidoException" key="error.security.logon.invalid" path="/OpenLogon.do" /&gt;
	&lt;/global-exceptions&gt;

	&lt;!-- Global Forward Definitions --&gt;
	&lt;global-forwards&gt;
		&lt;forward name="openLogon" path="app.logon"/&gt;
		&lt;forward name="inicial" path="/ExibeEscolhaRegional.do"/&gt;
		&lt;forward name="escolheRegional" path="/ExibeEscolhaRegional.do"/&gt;
		&lt;forward name="exibeOrdemVenda" path="/ExibeOrdemVenda.do"/&gt;
		&lt;forward name="cancelar" path="/Cancela.do"/&gt;
	&lt;/global-forwards&gt;

	&lt;!-- Action Mappings --&gt;
	&lt;action-mappings&gt;
		&lt;!-- Atalho para abrir pagina de LOGON --&gt;
		&lt;action path="/OpenLogon" forward="app.logon"/&gt;

		&lt;!--Action reponsavel por exibir a mensagem de ERRO que ocorrerem no sistema--&gt;
		&lt;action path="/Error" forward="app.error"/&gt;

		&lt;!--Action reponsavel por verificar se o usuario tem permissao para acessar o sistema--&gt;
		&lt;action path="/Logon" 
				type="com.claro.teleretencao.web.action.LogonAction" 
				name="LogonForm" 
				scope="request" 
				input="app.logon" 
				validate="true"/&gt;
				
		&lt;action path="/EscolheMandante" type="com.claro.teleretencao.web.action.EscolheMandanteAction" name="LogonForm" scope="request" input="app.logon" validate="false"/&gt;
		&lt;action path="/Logoff" type="com.claro.teleretencao.web.action.LogoffAction"&gt;
			&lt;forward name="success" path="/OpenLogon.do"/&gt;
		&lt;/action&gt;

		&lt;!-- CANCELAMENTO --&gt;
		&lt;action path="/Cancela" type="com.claro.teleretencao.web.action.CancelaAction"&gt;
			&lt;forward name="regional" path="/ExibeEscolhaRegional.do"/&gt;
		&lt;/action&gt;

		&lt;!-- Consulta de Ordem de Venda --&gt;
		&lt;action path="/ExibeConsultaOrdem" forward="ordemvenda.consulta" /&gt;
		&lt;action path="/ConsultaOrdemVenda" type="com.claro.teleretencao.web.action.ConsultaOrdemAction" name="ConsultaOrdemVendaForm" parameter="task" scope="request" input="ordemvenda.consulta" validate="true"&gt;
			&lt;forward contextRelative="true" name="dadosOrdemVenda" path="ordemvenda.dados"/&gt;
		&lt;/action&gt;

		&lt;!-- Atalho para abrir pagina para escolha de REGIONAL --&gt;
		&lt;action path="/ExibeEscolhaRegional" type="org.apache.struts.actions.ForwardAction" parameter="/EscolheRegional.do?task=inicia"/&gt;
		&lt;action path="/EscolheRegional" type="com.claro.teleretencao.web.action.EscolheRegionalAction" name="EscolheRegionalForm" parameter="task" scope="session" input="regional.escolha"/&gt;

		&lt;!-- Para abrir a pagina de VENDAS - PESQUISA de CLIENTES --&gt;
		&lt;action path="/ExibeVendas" forward="cliente.consulta" /&gt;
		&lt;action path="/ConsultaCliente" type="com.claro.teleretencao.web.action.ConsultaClienteAction" name="ConsultaClienteForm" parameter="task" scope="session" input="cliente.consulta" validate="true"&gt;
			&lt;forward name="exibe_pesquisa_produto" path="/ExibePesquisaProduto.do" /&gt;
		&lt;/action&gt;
		
		&lt;action path="/Etapa2" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="regional.escolha" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="opcoes.venda" /&gt;
		&lt;/action&gt;		
		
		&lt;action path="/Etapa3" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="opcoes.venda" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="dados.cliente" /&gt;
		&lt;/action&gt;	
		
		&lt;action path="/Etapa4" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="dados.cliente" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="dados.criacao" /&gt;
		&lt;/action&gt;	
		
		&lt;action path="/Etapa5" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="dados.criacao" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="solicita.agendamento" /&gt;
		&lt;/action&gt;

		&lt;action path="/Etapa6" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="dados.cliente" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="check.linhas" /&gt;
		&lt;/action&gt;
		
		&lt;action path="/Etapa7" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="dados.cliente" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="confirma.pedido" /&gt;
		&lt;/action&gt;
		
		&lt;action path="/Etapa8" 
				type="com.claro.teleretencao.web.action.EtapasAction" 
				name="OrdemVendaForm" 
				scope="session" 
				parameter="task" 
				input="dados.cliente" 
				validate="false"&gt;
				
			&lt;forward name="sucess" path="resultado.final" /&gt;
		&lt;/action&gt;

		&lt;!-- Para abrir a pagina de ESTORNO de RECEBIMENTO --&gt;
		&lt;action path="/ExibeEstorno" forward="estorno" /&gt;
		&lt;action path="/EstornaRecebimento" type="com.claro.teleretencao.web.action.EstornaRecebimentoAction" name="EstornoForm" scope="session" input="estorno" validate="true"&gt;
			&lt;forward name="resultado" path="estorno.resultado" /&gt;
		&lt;/action&gt;

		&lt;!-- Para abrir a pagina de PAGAMENTO --&gt;
		&lt;action path="/EfetuaPagto" type="com.claro.teleretencao.web.action.EfetuaPagtoAction" name="EfetuaPagtoForm" scope="request" input="pagto.ccredito"&gt;
			&lt;forward name="resultado" path="pagto.resultado" /&gt;
		&lt;/action&gt;

		&lt;!-- Para abrir a pagina de PESQUISA de PRODUTOS --&gt;
		&lt;action path="/ExibePesquisaProduto" forward="produto.pesquisa" name="PesquisaProdutoForm" validate="true"/&gt;
		&lt;action path="/PesquisaProduto" type="com.claro.teleretencao.web.action.PesquisaProdutoAction" name="PesquisaProdutoForm" parameter="task" scope="session" input="produto.pesquisa"/&gt;

		&lt;!-- Mostra os DETALHES de um PRODUTO --&gt;
		&lt;action path="/ExibeProduto" type="com.claro.teleretencao.web.action.ExibeProdutoAction" name="ProdutoForm" parameter="task" scope="request" input="produto.detalhe"&gt;
			&lt;forward name="error" path="produto.pesquisa"/&gt;
			&lt;forward name="success" path="produto.detalhe"/&gt;
			&lt;forward name="empty" path="/ExibePesquisaProduto.do"/&gt;
		&lt;/action&gt;
		
		&lt;action path="/ConsultaCidades" type="com.claro.teleretencao.web.action.EtapasAction" parameter="task" &gt;
			&lt;forward name="success" path="dados.cliente"/&gt;
		&lt;/action&gt;

		&lt;!-- Insere um produto no CARRINHO DE COMPRAS --&gt;
		&lt;action path="/InsereProduto" type="com.claro.teleretencao.web.action.InsereProdutoAction" name="ProdutoForm" scope="request" input="produto.detalhe"&gt;
			&lt;forward contextRelative="true" name="error" path="produto.pesquisa"/&gt;
		&lt;/action&gt;

		&lt;!-- Mostra o CARRINHO DE COMPRAS --&gt;
		&lt;action path="/ExibeOrdemVenda" forward="ordemvenda.carrinho" name="OrdemVendaForm" validate="true"/&gt;

		&lt;!-- Acoes do CARRINHO DE COMPRAS --&gt;
		&lt;action path="/OrdemVenda" type="com.claro.teleretencao.web.action.OrdemVendaAction" name="OrdemVendaForm" parameter="task" scope="session" input="ordemvenda.carrinho" validate="true"&gt;
			&lt;forward name="exibe_pagto" path="pagto.ccredito"/&gt;
			&lt;forward name="ordem_gerada" path="ordemvenda.resultado"/&gt;
			&lt;forward contextRelative="true" name="produto" path="produto.pesquisa"/&gt;
		&lt;/action&gt;
	&lt;/action-mappings&gt;

	&lt;controller processorClass="com.claro.teleretencao.web.ApplRequestProcessor" debug="1"&gt;&lt;/controller&gt;

	&lt;plug-in className="com.claro.teleretencao.web.action.InitPlugIn"&gt;
	&lt;/plug-in&gt;

	&lt;plug-in className="org.apache.struts.tiles.TilesPlugin"&gt;
		&lt;set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/&gt;
		&lt;set-property property="moduleAware" value="true"/&gt;
	&lt;/plug-in&gt;

&lt;/struts-config&gt;

valeu

Hayan

olha jemoliveira, fiz um exemplo pequino :

Form :
package com.br.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class SuaForm extends ActionForm {

	private static final long serialVersionUID = 1L;

	private String nome;

	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		if(getNome() == null || getNome().length() < 1){
			errors.add("nome", new ActionMessage("nome.obr"));
		}
		return errors;
	}


	public void reset(ActionMapping mapping, HttpServletRequest request) {
		
	}


	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}
}
Action :
package com.br.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SuaAction extends Action {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		return mapping.findForward("success");
	}
}
struts-config.xml :
?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="suaForm" type="com.br.struts.form.SuaForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="suaForm"
      input="/index.jsp"
      name="suaForm"
      path="/sua"
      scope="request"
      type="com.br.struts.action.SuaAction">
      <forward name="failur" path="/index.jsp" />
      <forward name="success" path="/success.jsp" />
    </action>

  </action-mappings>

  <message-resources parameter="com.br.struts.ApplicationResources" />
</struts-config>
index.jsp :
<html:form action="/sua.do">
   <html:errors property="nome"/>
   		<html:text property="nome"/>
   		<html:submit/>
   </html:form>

um abraço

jemoliveira

valeu Hayan

mais ja consegui resolver

era no struts-config meu validade estava como false

mais valeu pela ajuda

Criado 9 de junho de 2008
Ultima resposta 9 de jun. de 2008
Respostas 4
Participantes 2