Validar conta

13 respostas
L
galera preciso de uma ajuda... é o seguinte, tenho um jsp com campo conta:
.......
	<fieldset>
		<legend>Consulta</legend>
			<html:form action="/crm.do?metodo=validarContaBanrisul">
				<td class="field"><strong>Agência:</strong></td>
				<td class="data"><input type="text" alt="agencia" maxlength="4" name="agencia" style="height:20;width:50px;border:1px solid #d7e4e7;background-color:#eaf4f6;font-family:Tahoma;font-size:13px;color:#6a6a6a;padding-left:3px" id="agencia" onblur="validarAgencia(this);"/></td>
				</tr>
							<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>
						</table>
						
						<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>
    
</body>
</html>
e esse é meu dao:
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;
	}
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:
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;
	}
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.

13 Respostas

L

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

L

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?

L

Você está usando Struts?

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

L
então coloquei assim:
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;
	}
coloquei um monte so p ver ate onde ia... e no console do eclipse so apareceu até o TESTE5.....
D

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

L

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

L

struts xml?..

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

L

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

L
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:
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 = "<tr class='title-content-box' id='codAgencia'>";
						optTag = optTag+"<td class='field'><strong>Endereço Agência:</strong></td>";
						optTag = optTag+"<td class='data'>";
						optTag = optTag+data.endereco;
						optTag = optTag+"</td></tr>";
						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 = "<tr class='title-content-box' id='codConta'>";
						jQuery("#codConta").remove();
						jQuery("#conta").val(codigoConta);
						jQuery(optTag).appendTo("#contaTable");
					}
				}
			}
	);
}
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>
D

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;  
         }
L

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

L

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:

L

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.

Criado 28 de fevereiro de 2011
Ultima resposta 3 de mar. de 2011
Respostas 13
Participantes 3