Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problemas com atribuição de valor no getter

Boa tarde.

Quando envio meu formulario via POST, ele não está atribuindo os valores dos campos para que eu possa comparar no lado servidor, e ele me retorna undefined, alguma luz? Segue o código:

function foundUser(){

    $.ajax({
        type: "POST",
        url: "rest/authenticationRest/searchUser",
        data: JSON.stringify($("#authentication")),
        contentType: "application/json",
        success:function(date){

            alert(date.login)
        },error(err){
            console.log(err);
            alert("Erro ao processar a requisição " + err.responseText);
        }

    });
}
package br.com.festivalRest.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import br.com.festivalRest.rest.jdbcinterface.FestivalDAO;
import br.com.festivalRest.objetos.User;

public class JDBCAuthenticationDAO implements FestivalDAO {
    private Connection conexao;

    public JDBCAuthenticationDAO(Connection conexao){
        this.conexao = conexao;
    }

    public boolean searchUser(User user){

        boolean checkUser = false;

        String selectUser = "select * from usuarios where login = ? and senha = ?";
        PreparedStatement p;

        try{

            p = this.conexao.prepareStatement(selectUser);
            p.setString(1, user.getLogin());
            p.setString(2, user.getSenha());
            ResultSet rs = p.executeQuery();

            while(rs.next()){
                System.out.println(user);
                checkUser = true;
            }

        } catch(Exception e){
            e.printStackTrace();
        }

        return checkUser;
    }

}
package br.com.festivalRest.rest.authentication;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.core.Response;

import com.google.gson.Gson;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import br.com.festivalRest.bd.conexao.Conexao;
import br.com.festivalRest.jdbc.JDBCAuthenticationDAO;
import br.com.festivalRest.objetos.User;

@Path("authenticationRest")
public class AuthenticationRest extends UtilRest {

    public AuthenticationRest(){
    }

    @POST
    @Path("/searchUser")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response foundUser(String usuarioParam){
        try{

            Conexao conec = new Conexao();
            Connection conexao = conec.abrirConexao();
            JDBCAuthenticationDAO jdbcAuthentication = new JDBCAuthenticationDAO(conexao);

            Gson gson = new Gson();
            User user = gson.fromJson(usuarioParam, User.class);

            jdbcAuthentication.searchUser(user);
            conec.fecharConexao();

            return this.buildResponse("OK");

        }catch(Exception e){
            e.printStackTrace();
            return this.buildErrorResponse("Falha");
        }
    }
}
                <div class="modal fade" id="modal-authentication" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal">&times;</button>
                                <h4 class="modal-title">Faça seu login</h4>
                            </div>
                            <div class="modal-body">
                                <form id="authentication" class="form">                                
                                    <div class="form-group">
                                        <label for="usuario">Usuario</label>
                                        <input type="text" class="form-control" id="login" name="login" placeholder="Informe seu usuario" >
                                    </div>
                                    <div class="form-group">
                                        <label for="password">Senha</label>
                                        <input type="password" class="form-control" id="senha" name="senha" placeholder="********" >
                                    </div>
                                </form>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-primary" data-dismiss="modal" onclick="foundUser()">Enviar</button> 
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
3 respostas

Oi, Maria!

Algumas sugestões:

  • Abra o console de desenvolvimento do seu navegador (Chrome é Cmd+Opt+I ou F12) e olhe a aba "Network" ou "Rede". Aí envie o formulário e confira se as rotas chamadas e parâmetros enviados estão de acordo com o que você espera.
  • Pode tentar executar pedaços do seu código javascript no console de desenvolvimento também, na aba "Console". Tente gerar o modelo do usuario em formato JSON por ele pra ver se está saindo tudo certo.
  • Tente debugar o trecho em java da aplicação para garantir que você está recebendo o atributo esperado, formatado do modo esperado.

Se continuar sem descobrir qual o problema, volte aqui e poste alguns prints! Para isso suba a imagem em algum local (por exemplo, pastebucket.co/), copie a URL da imagem e cole aqui deste modo:

![](URL copiada)

Bom dia, eu recebo null os dados, porém pelo debug do navegador ele vem da seguinte formato: http://imgur.com/a/FTSh3

solução!

Maria, isso é o que seu código javascript está tentando enviar pro servidor, certo? Parece que os dados não estão indo de acordo com o que você espera.

Isso deve ser culpa do JSON.stringify(). Tenta gerar o JSON manualmente primeiro pra ver se dá certo, e aí então procurar uma ferramenta que faça isso pra você.

Um exemplo de código, supondo que #authentication seja o id de um <form>:

var data = {};
$("#authentication input").each(function(i, input) {
  if ($(input).attr("type").toLowerCase() == "submit") return;
  var name = $(input).attr("name");
  var value = $(input).attr("value");
  data[name] = value;
});