Validation Struts 2 - Dúvida

7 respostas
edysnipes

Estou com problema em como utilizar o validation do Strunt 2.

A dúvida é como implementar. Faço tudo igual o site do guide do struts mas não funciona.

vou postar os códigos:

login.jsp

<div id="form_login">
	<fieldset>
	<legend>Acesso Restrito</legend>
	<s:form name="form_login" action="login.jsp!acessoPermissionario">
	   <s:textfield  name="nrIdentidade" label="Identidade" onkeypress="mascara(this,soNumeros)" maxlength="12"></s:textfield>
	   <s:password  name="deSenha" label="Senha"></s:password>
	   <s:submit cssClass="submit" value="Acessar"></s:submit>
	</s:form>
	</fieldset>
                // Utilizo isso aki para informar que o usuário não existe
	<s:actionmessage cssClass="avisos"/>
</div>

LoginAction

package br.mil.siscop.action;


import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import br.mil.siscop.bean.Permissionario;
import br.mil.siscop.bean.SolicitacaoPNR;
import br.mil.siscop.dao.PermissionarioDAO;
import br.mil.siscop.dao.SolicitacaoPNRDAO;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport implements SessionAware{
	
	private static final long serialVersionUID = 1L;
	
	private String nrIdentidade;
	private String deSenha;
	private Permissionario perm;
	private Map session;
	private boolean flagMenuSolicitarPNREditavel = false;
	private SolicitacaoPNR solicitacaoPNR;
	
	
	
	
	public SolicitacaoPNR getSolicitacaoPNR() {
		return solicitacaoPNR;
	}

	public void setSolicitacaoPNR(SolicitacaoPNR solicitacaoPNR) {
		this.solicitacaoPNR = solicitacaoPNR;
	}

	public boolean isFlagMenuSolicitarPNREditavel() {
		return flagMenuSolicitarPNREditavel;
	}

	public void setFlagMenuSolicitarPNREditavel(boolean flagMenuSolicitarPNREditavel) {
		this.flagMenuSolicitarPNREditavel = flagMenuSolicitarPNREditavel;
	}

	public Map getSession() {
		return session;
	}

	public void setSession(Map session) {
		this.session = session;
	}

	public String getNrIdentidade() {
		return nrIdentidade;
	}

	public void setNrIdentidade(String nrIdentidade) {
		this.nrIdentidade = nrIdentidade;
	}

	public String getDeSenha() {
		return deSenha;
	}

	public void setDeSenha(String deSenha) {
		this.deSenha = deSenha;
	}

	public Permissionario getPerm() {
		return perm;
	}

	public void setPerm(Permissionario perm) {
		this.perm = perm;
	}


	

	public String acessoPermissionario() {
		try {
				perm = PermissionarioDAO.getInstance().validaLogin(nrIdentidade, deSenha);
				if (perm == null) {
					addActionMessage("Cadastro não encontrado.");
					return ActionSupport.ERROR;
				}else{
					session.put("nrIdentidade", nrIdentidade);
					session.put("permLogado", perm);
					solicitacaoPNR = SolicitacaoPNRDAO.getInstance().pesquisarSolicitacaoPNR(nrIdentidade);
					if(perm.getPermSituacao().getIdPermSituacao() == 2){
						this.flagMenuSolicitarPNREditavel = true;
					}
					return SUCCESS;
				}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}

validation.xml (fica no src)

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
  <field name="nrIdentidade">
      <field-validator type="required">
          <message>You must enter a value for bar.</message>
      </field-validator>
      <field-validator type="int">
          <param name="min">10</param>
          <param name="max">12</param>
          <message>bar must be between ${min} and ${max}, current value is ${bar}.</message>
      </field-validator>
  </field>

  <validator type="expression">
      <param name="expression">foo lt bar </param>
      <message>Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.</message>
  </validator>
</validators>

não inseri nada no web.xml nem no struts.xml

quando aciono o submit do form deixando os campos em branco so me é retornado que o usuário não foi encontrado.

Aguardo ajuda!

7 Respostas

L

Oi, tive o mesmo problema… Também tentei colocar o nome da Action no nome do xml, mas tb não adiantou (ex. Action-validation.xml).
Se alguém te ajudar, vai me ajudar tb! :slight_smile:

cris.t

Olá,
Fiz um pequeno tutorialzinho sobre, talvez possa ajuda-los…e qualquer dúvida, por favor me dêem um feedbeck, pois posso ter esquecido de algo.

edysnipes

Valew cris mas ainda há algo errado.

cris.t

vc quer validar o login e senha não é?

D

tenta usar o <s:actionerror cssClass=“avisos”/>

ou usa annotation do validation… muito mais tranquilo d fazer…

cris.t

O seu arquivo de validação deve ter o mesmo nome que a sua action , e vc deve colocar no form o atributo validate=true!!

edysnipes

Bom, estou utilizando o annotations do validate. Qual a principal diferença??

Criado 21 de janeiro de 2009
Ultima resposta 21 de jan. de 2009
Respostas 7
Participantes 4