Validar conta

galera preciso de uma ajuda… é o seguinte, tenho um jsp com campo conta:

[code]…

Consulta
<html:form action="/crm.do?metodo=validarContaBanrisul">

Agência:



Conta:


					<div class="form_pesquisa_linha_button">
						<div style="float:left; margin-left:70px;">
							<input type="image" src="./new_images/bt_voltar.png" id="voltar" />
						</div>
					
						<div style="float:right; margin-right:70px;">
							<input type="image" src="./new_images/bt_prosseguir.png"  id="prosseguir" />
						</div>
					</div>
						
				</html:form>
			</fieldset>
		</div>
	</div>
    <!-- CONTEUDO -->
    
    <%@ include file="/jsps/common/footer.jsp"%>
</div>
<script type="text/javascript">

function validarConta() {
	var conta = document.getElementById("conta");
	
	if (conta.value == "") {
		jAlert("O campo conta não pode ser vazio!");
	} else if (conta.value.length != 10) {
		jAlert("Conta Inválida!.");
	} else if (isNaN(conta.value)) {
		jAlert("O campo conta deve conter apenas números!");
	} else if (conta.value.substring(0, 2) != "35") {
		jAlert("Conta Inválida!.");
	}    
}

</script>
[/code] e esse é meu dao: [code] public String validarConta(String codigoConta) {
	Connection connection = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;
	String toReturn = "";
	try {
		connection = ConnectDB.getConnection();
		String sql = "SELECT CONTA FROM CADASTRO_CONTAS WHERE CONTA = ?";
		stmt = connection.prepareStatement(sql);
		stmt.setString(1, codigoConta);
		rs = stmt.executeQuery();

		if (rs.next()) {
			toReturn = rs.getString(1);
		}
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
	} finally {
		ConnectDB.free(connection, stmt, rs);
	}
	return toReturn;
}[/code]

eu preciso que o campo conta começe com 35 e tenha 10 numero… ate ai tudo bem, o problema é q eu preciso comparar o número que o usuário digitar com o que esta na base, preciso confirmar que a conta exista mesmo… por enquanto a pessoa pode digitar qualquer número que ele vai para a proxima tela. Alguém poderia me ajudar ? peguei um exemplo que eu tinha aqui do campo agencia:

[code] public ActionForward ValidarConta(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
CRMDao dao = new CRMDao();
String codigoConta = request.getParameter(“codigoConta”);

	String conta = dao.validarConta(codigoConta);
	String retorno = "";

	if (conta != null && !conta.equals("")) {
		retorno = "{\"Conta\":\"" + conta + "\"}";
	} else {
		retorno = "{\"erro\":\"" + "Conta Inválida!" + "\"}";
	}

	try {
		response.getWriter().print(retorno);
		response.getWriter().flush();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return null;
}[/code]

troquei alguns campos e coloquei Conta envez de agencia… mas na hora de fazer a comparação eu me perco… o que eu posso colocar no codigo(ou tirar) p poder fazer essa validação?

Desde ja agradeço.

Até onde vi seu código está ok. Já tentou depurar pra ver?

então eu fiz… mas não mostra nenhum erro… apenas passa para outra tela sem confirmar se o numero digitado é o mesmo que esta gravado no banco de dados…

tem mais alguma dica do que pode ser?

Você está usando Struts?

Parece tudo certo, usa o println pra ver se funciona.

então coloquei assim:

[code] public ActionForward validarAgencia(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {

	CRMDao dao = new CRMDao();
	String codigoAgencia = request.getParameter("codigoAgencia");

	String enderecoAgencia = dao.validarAgencia(codigoAgencia);
	String retorno = "";
	System.out.println("TESTE2");
	if (enderecoAgencia != null && !enderecoAgencia.equals("")) {
		retorno = "{\"endereco\":\"" + enderecoAgencia + "\"}";
		System.out.println("TESTE3");
	} else {
		retorno = "{\"erro\":\"" + "Agência Inválida!" + "\"}";
		System.out.println("TESTE4");
	}
	System.out.println("TESTE5");
	try {
		response.getWriter().print(retorno);
		response.getWriter().flush();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return null;
}
public ActionForward ValidarConta(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
	System.out.println("TESTE6");
	CRMDao dao = new CRMDao();
	String codigoConta = request.getParameter("codigoConta");
	System.out.println("TESTE7");
	String conta = dao.validarConta(codigoConta);
	String retorno = "";
	System.out.println("TESTE8");
	if (conta != null && !conta.equals("")) {
		retorno = "{\"Conta\":\"" + conta + "\"}";
		System.out.println("TESTE9");
	} else {
		retorno = "{\"erro\":\"" + "Conta Inválida!" + "\"}";
		System.out.println("TESTE10");
	}

	try {
		response.getWriter().print(retorno);
		response.getWriter().flush();
		System.out.println("TESTE11");
	} catch (IOException e) {
		e.printStackTrace();
		System.out.println("TESTE12");
	}
	return null;
}	

[/code]
coloquei um monte so p ver ate onde ia… e no console do eclipse so apareceu até o TESTE5…

Dá um refresh / Project>clean no seu projeto, pode ser cache ^^

seu struts xml não deve estar direcionando para o método validarConta da uma olhada nas configurações.

struts xml?..

vc diz o struts_config?.. tipo, desculpa ams ano entendi!!!

Se não está escrevendo os sysouts é porque não está passando no método
em algum momento você tem que direcionar para o método validar conta
eu quero ver qual é esse momento, se é no click de um botão ou no onblur do campo
e quero ver o mapeamento do struts config

então meu struts config esta assim:

<form-bean name="crmForm" type="com.evermobile.pos.manager.form.CRMForm" /> <action path="/crm" scope="request" unknown="true" name="crmForm" parameter="metodo" type="com.evermobile.pos.manager.action.CRMAction"> <forward name="valida.consultora" path="/jsps/crm/consulta.jsp" /> <forward name="validacao.informe_conta" path="/jsps/crm/informe_conta.jsp" /> <forward name="validacao.positiva" path="/jsps/crm/validacaoPositiva.jsp" /> </action>

e tinha um js q tinha a agencia eu peguei e copiei so p ver se dava certo:

[code]function validarAgencia(campoAgencia){
var codigoAgencia = jQuery(campoAgencia).val();
if(codigoAgencia.length <4){
for(var i=0; ;i++){
codigoAgencia = ‘0’+codigoAgencia;
if(codigoAgencia.length ==4){
break;
}
}
}
jQuery.getJSON(‘crm.do?metodo=validarAgencia&codigoAgencia=’+codigoAgencia,
function(data) {
var html = ‘’;
if(data != null) {
if(data.erro != null){
jAlert(data.erro, ‘Atenção’, function(){
jQuery(campoAgencia).val(’’);
jQuery(campoAgencia).focus();
});
}else{
var optTag = “

”;
optTag = optTag+“Endereço Agência:”;
optTag = optTag+"";
optTag = optTag+data.endereco;
optTag = optTag+" ";
jQuery("#codAgencia").remove();
jQuery("#agencia").val(codigoAgencia);
jQuery(optTag).appendTo("#contaTable");
}
}
}
);
}

function validarConta(campoConta){
var codigoConta = jQuery(campoConta).val();
if(codigoConta.length <10){
for(var i=0; ;i++){
codigoConta = ‘35’+codigoConta;
if(codigoConta.length ==10){
break;
}
}
}
jQuery.getJSON(‘crm.do?metodo=validarConta&codigoConta=’+codigoConta,
function(data) {
var html = ‘’;
if(data != null) {
if(data.erro != null){
jAlert(data.erro, ‘Atenção’, function(){
jQuery(campoConta).val(’’);
jQuery(campoConta).focus();
});
}else{
var optTag = “

”;
jQuery("#codConta").remove();
jQuery("#conta").val(codigoConta);
jQuery(optTag).appendTo("#contaTable");
}
}
}
);
}[/code]

e no meu jsp estou passando com onblur:

<tr id="txtConta" class="title-content-box"> <td class="field"><strong>Conta:</strong></td> <td class="data"><input type="text" maxlength="10" name="conta" style="height:20;width:150px;border:1px solid #d7e4e7;background-color:#eaf4f6;font-family:Tahoma;font-size:13px;color:#6a6a6a;padding-left:3px" id="conta" onblur="validarConta(this)"/></td> </tr>

Pode ser muita ignorancia minha, mas realmente esse crm.do tá certo? (geralmente eu so conhecia xxx.action, e no seu struts config ta so crm)

E esse js

 if(codigoConta.length <10){  
         for(var i=0; ;i++){  
             codigoConta = '35'+codigoConta;  
             if(codigoConta.length ==10){  
                 break;  
             }  
         }   
   }  

não seria mais intuitivo assim?

         for(var i=0; codigoConta.length <10 ;i++){  
             codigoConta = '35'+codigoConta;  
         }   

Na sua action o método validarConta está com v maiusculo por isso ele não está encontrando.

então eu mudei isso … mas mesmo assim, no jsp não valida, eu posso colocar qualquer coisa que mesmo assim ela passa para a outra pagina! :frowning:

E que outra página é essa?
É uma página do sistema? É a página correta para onde deveria ir? ou é uma tela em branco?

Você testou com conta válida e conta inválida?

Não sei oq pode estar acontecendo, mas pode ser que a mensagem não esteja sendo exibida.