Ir ao conteúdo
  • Cadastre-se

psykotico

Membros Plenos
  • Total de itens

    303
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

58

2 Seguidores

Informações gerais

  • Cidade e Estado
    São Paulo / SP
  • Sexo
    Prefiro não dizer

Outros

  • Ocupação
    Analista de Sistemas Java
  • Interesses
    Microservices, SOA, SaaS, PaaS, Integração, Java, Ruby, NodeJS, NoSQL
  1. Ok, Desculpe falha minha ... Por estar trabalhando muito com JSON, acabei passando a anotação errada (Sim, caso você queira trabalhar com AJAX, essa seria a anotação correta) .. Desculpe mesmo. vamos a duas soluçoes: A primeira é você anotar com @RequestParam e pegar atributo por atributo. Não é tão simples, mas talvez em casos mais específicos te ajude: @RequestMapping(value="/", method=RequestMethod.POST) public String form(@RequestParam("nome") String nome, @RequestParam("email") String email, @RequestParam("telefone") String telefone, @RequestParam("mensagem") String mensagem) { Contato contato = new Contato(); contato.setNome(nome); contato.setEmail(email); contato.setMensagem(mensagem); contato.set cr.save(contato); return "redirect:/Index"; } A segunda, e acredito que seja a que mais se adeque ao que você deseja (O Thymeleaf automaticamente seta o ModelAttribute quando você utiliza th:object="${contato}") : @RequestMapping(value="/", method=RequestMethod.POST) public String form(@ModelAttribute Contato contato) { cr.save(contato); return "redirect:/Index"; }
  2. Opa ... No seu Controller, falta anotar o parâmetro para o Spring entender que esse valor está relacionado ao request: @RequestMapping(value="/", method=RequestMethod.POST) public String form(@RequestBody Contato contato) { cr.save(contato); return "redirect:/Index"; }
  3. Sim ... Na verdade como você disse que estava aprendendo, achei que trabalhar apenas com valores simples na view e no MB seria mais tranquilo pra você entender. Mas se já está abstraindo isso, perfeito, é assim mesmo
  4. No form, você está mostrando o valor do ID e o nome da pessoa. você pode utilizar um DOM Input hidden pra fazer essa parte e poder recuperar o Id da pessoa pelo menos. <h:inputHidden value="#{user.id}" id="hiddenId" />
  5. O velho caso do Relacionamento Bidirecional ... é terrível e gera vários erros mesmo ... Não é elegante fazer isso, mas meu sono não me deixa pensar em algo melhor ... public void addTelefone(Pessoa pessoa, Telefone telefone) { try { sessao = HibernateUtil.getSessionFactory().openSession(); if (pessoa.getTelefones() == null) { pessoa.setTelefones(new ArrayList<Telefone>()); } pessoa.getTelefones().add(telefone); telefone.setPessoa(pessoa); sessao.save(telefone); transacao.commit(); } catch (Exception e) { e.printStackTrace(); } finally { sessao.close(); } } O Problema do bidirecional é que ele tem problemas para entender que quando você seta um, implicitamente você está setando o outro ... Forçando dessa forma, você garante que o mesmo objeto está sendo setado nos dois lados ...
  6. Exatamente como disse o @Boko Moko. Mas é mais interessante você estudar sobre encapsulamento, na Orientação a Objetos. Assim você começa a entender sobre atributos, métodos e suas características.
  7. Existem várias formas. Acredito que a forma mais simples de você fazer isso é inserindo cada linha em uma Lista de Strings, como abaixo: String linha; List<String> lista = new ArrayList<String>() while( (linha = reader.readLine()) != null ){ lista.add(linha); } E depois disso utilizar algum algorítmo de ordenação para ordenar a lista. PORÉM: Se forem números, tome cuidado pos ele tende a ordenar Strings por caractere, o que resulta em algo como [1,10,11,12 ... 2,20,21 ...] ... Assim, teria que se atentar a essa situação ... Outra forma é utilizar a Biblioteca Collections ... Collections.sort(list, comparator); Nesse caso, para evitar a Situação de ordem de números, você teria que implementar a Classe comparator para indicar o maior e menor.
  8. É que você tá chamando o método com o seguinte parâmetro: logindao logi = new logindao(); //... logi.Alterar(login.getSenha()); ou seja, você tá passando uma String Senha, para um método e lá você está aguardando que o Objeto seja um LoginBean acredito que deva funcionar se você alterar a chamada do método para: logi.Alterar(login);
  9. Isso exato ... assim você não precisa ficar buscando o código antes de fazer o update e faz tudo num processo apenas ... outra coisa interessante é validar pra ver se ele preencheu o campo senha ... só fazer um !senha.isEmpty() assim ele evita salvar logins com senha vazia ....
  10. Não necessariamente. Veja, se (e exclusivamente se) o campo login for único no banco (ou seja, só vai existir valores diferentes) então qualquer pesquisa por login só vai retornar um campo, correto ... Com isso, na sua pesquisa: String sql = "Select * from usuario where login = ? "; Já faz exatamente o que eu quis dizer. Com isso, seu update ficaria com String sql = "update usuario set senha = ? where login = ?"; Da forma que você está fazendo, dá a chance do usuário mudar inclusive o campo login. Com isso eu posso colocar TODOS os logins da tabela com o mesmo nome, e depois disso, o sistema não conseguirá identificar qual é qual. Exemplo: ++++++++++++++++++++++++++++++++++++++++ | codigo | login | senha | +--------+---------------+-------------+ | 1 | usuario1 | umasenha | | 2 | outrouser | outrasenha | | 3 | maisum | maisoutra | ++++++++++++++++++++++++++++++++++++++++ Se eu no primeiro momento fizer login = "outrouser" terei: Select * from usuario where login = 'outrouser'; o que retornaria o código 2 para a tela. Mas, se depois de atualizar o form eu completar com as informações login = "maisum" e senha = "blabla", eu tenho: update usuario set login = 'maisum',senha = 'blabla' where codigo = 2 O que me resulta em uma tabela assim: ++++++++++++++++++++++++++++++++++++++++ | codigo | login | senha | +--------+---------------+-------------+ | 1 | usuario1 | umasenha | | 2 | maisum | blabla | | 3 | maisum | maisoutra | ++++++++++++++++++++++++++++++++++++++++ E com isso, como seu sistema localizará o usuário "maisum" correto? Porém, se você utilizar a constraint unique para o campo login, nunca terá esse problema de duplicação na coluna, e com isso, você já poderá fazer o update da forma que eu expliquei ali em cima. PS.: Não sei se é o caso, mas por boa prática de segurança, geralmente alteração de senha só é realizada em uma console de admin, ou após o usuário estar logado. Se ele está logado, basta você manter os dados do usuário em um objeto estático (ou um Bean, caso você utilize Injeção de Dependência) e buscar os valores antes do update, só solicitando a senha. Se for numa console admin, como você já listou todos os usuários, você novamente já tem os valores de login na tela de listagem, e pode reaproveitar inclusive o mesmo form para update de senha.
  11. Tente com Object result = consulta.getSingleResult(); return result == null; você está solicitando para ele executar uma ação de update no banco, mas é uma query simples ... como você sempre tem o objeto consulta instanciado, ele nunca vai dar false ...
  12. Acho que esse tópico aqui vai te ajudar: https://stackoverflow.com/questions/8769336/drag-image-from-browser-to-drop-onto-jlabel
  13. no caso a correta seria a resposta 1 ... p.push(8); p.push(15); Object ob = pop(); p.push(23); p.push(ob); p.push(p.top()); p.push(p.pop());
  14. Cara, analisando seu código me deparei com uma série grande de erros... - No switch case, você finaliza a estrutura, mas abre um "case 2" logo após. Verifica a ordem de chaves pois está completamente errada. - Objeto materias não foi inicializado - Você cria dois objetos com nomes dataNascimento; - valorHoraria não foi criado - chamada do Parser está errada: Interger.Integer.parseInt(...) ou Interger.parseInt(...) ... o correto é Integer.parseInt() - disciolinasExistentes não foi criado - método materias.IndexOutOF não existe ... o correto é materias.indexOf(...) Veja, não consigo nem analisar se há erro de lógica com tanto erro de compilação ... verifique isso antes...
  15. Esse tipo de abordagem é um pouco estranha, já que no fim, a informação que você tem para alterar não é o id, e sim o login ... Apenas pra entender o motivo, porque você quer que apareça os id do usuário na tela de alteração de senha?? Veja, se isso força alguns processos a mais só pra satisfazer esse caminho. você precisaria: - Pesquisar o login no banco para buscar o id do usuário a partir do campo login. - Setar o id do usuário no campo da tela para ele ser exibido. - Executar o comando de update no banco com os valores novos. Se essa necessidade do id não for obrigatória, basta fazer o update com um where apontando apenas o campo login (lembrando que o campo login deve ter constraint de unicidade na tabela)

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×