JSF uygulamada kullanıcının giriş yapmasının akabinde ona ait bilgileri çekecek bir sınıf yazdım. Bu sınıfta fillList metodu ile kullanıcıya ait bilgileri değişkenlere set edeceğim. Fakat metodun bitiminin ardından değişkenler yine null değerlerine dönüyorlar. Static yaparsam sorun çözülüyor ancak ben static olmayınca neden olmadığını öğrenmek istiyorum. JSF sayfasında olması gereken değer gelmiyor. Kod şöyle: package com.ilkgunel.hastaneotomasyonu.controller;

import com.ilkgunel.hastaneotomasyonu.entity.Patients;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import  javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

@ManagedBean
@ViewScoped
public class GetPatientInformation implements Serializable{
    private String identityNumber;
    static private String name;
    static private String surname;
    private String gender;
    private String birthplace;
    private Date birthDate;
    private String fatherName;
    private String motherName;
    private String mobilePhoneNumber;
    private String homePhoneNumber;
    private String emailAddress;
    private String password;

EntityManagerFactory emf=Persistence.createEntityManagerFactory("HospitalAutomation");
EntityManager em=emf.createEntityManager();

List<Patients> patientInfo;

@ManagedProperty(value = "#{loginControlClass}")
private LoginControlClass loginControlClassObject;

public void fillList(ActionEvent event)
{
    System.out.println("Hasta Bilgisi Getirme Medodu Çalıitı");
    TypedQuery<Patients> query=em.createQuery("SELECT p FROM Patients p WHERE p.identitynumber=:patientid",Patients.class);
    System.out.println("Gelen ID"+loginControlClassObject.identityNumber);
    query.setParameter("patientid", loginControlClassObject.identityNumber);
    patientInfo=new ArrayList<>();
    patientInfo=query.getResultList();

    for (Patients p : patientInfo) {
        setIdentityNumber(p.getIdentitynumber());
        name=p.getName();
        setSurname(p.getSurname());
        setGender(p.getGender());
        setBirthplace(p.getBirthplace());
        setBirthDate(p.getBirthdate());
        setFatherName(p.getFathername());
        setMotherName(p.getMothername());
        setMobilePhoneNumber(p.getPhonenumber());
        setHomePhoneNumber(p.getPhonenumber());
        setEmailAddress(p.getEmailaddress());
        setPassword(p.getPassword());
    }
    System.out.println("Gönderilen İsim:"+name);
    System.out.println("Hasta Bilgisi Getirme Medodu Bitti");
}

public LoginControlClass getLoginControlClassObject() {
    return loginControlClassObject;
}

public void setLoginControlClassObject(LoginControlClass loginControlClassObject) {
    this.loginControlClassObject = loginControlClassObject;
}

public List<Patients> getPatientInfo() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }

    return patientInfo;
}

public void setPatientInfo(List<Patients> patientInfo) {
    this.patientInfo = patientInfo;
}

public String getIdentityNumber() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return identityNumber;
}

public void setIdentityNumber(String identityNumber) {
    this.identityNumber = identityNumber;
}

public String getName() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return name;
}

public void setName(String name) {

    this.name = name;
}

public String getSurname() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return surname;
}

public void setSurname(String surname) {
    this.surname = surname;
}

public String getGender() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

public String getBirthplace() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return birthplace;
}

public void setBirthplace(String birthplace) {
    this.birthplace = birthplace;
}

public Date getBirthDate() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return birthDate;
}

public void setBirthDate(Date birthDate) {
    this.birthDate = birthDate;
}

public String getFatherName() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return fatherName;
}

public void setFatherName(String fatherName) {
    this.fatherName = fatherName;
}

public String getMotherName() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return motherName;
}

public void setMotherName(String motherName) {
    this.motherName = motherName;
}

public String getMobilePhoneNumber() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return mobilePhoneNumber;
}

public void setMobilePhoneNumber(String mobilePhoneNumber) {
    this.mobilePhoneNumber = mobilePhoneNumber;
}

public String getHomePhoneNumber() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return homePhoneNumber;
}

public void setHomePhoneNumber(String homePhoneNumber) {
    this.homePhoneNumber = homePhoneNumber;
}

public String getEmailAddress() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return emailAddress;
}

public void setEmailAddress(String emailAddress) {
    this.emailAddress = emailAddress;
}

public String getPassword() {
    try {
        Thread.sleep(2000);
    } catch (Exception e) {
        System.err.println(e);
    }
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}

soruldu: 19 May '15, 11:05

ilkay's gravatar image

ilkay
726333649
cevap kabul oranı: 13%

fill metodundaki foreach'i çözemedim ? id'ye göre tek kayıt dönmüyormu? Birden fazla kayıt donuyorsa setter'lara en son kayıtın bilgisi set edilir, öncekiler ezilir.

Thread.sleep gördüm.. sebebini çözemedim?

(19 May '15, 13:08) Turgay Can Turgay%20Can's gravatar image

O sleepleri acaba get metotları değer gelmeden önce mi çalışıyor denemek için koymuştum.İşe yaramadı. Foreach için de dediğiniz gibi tek kayıt dönüyor ben de gelen listedeki değerleri değişkenlere basıyorum set metodu ile ancak metot çıkışında değer kayboluyor değişken yine null değer alıyor.

(19 May '15, 13:59) ilkay ilkay's gravatar image

Login olmuş kullanıcıyı nerede tutuyorsunuz? örnek : HttpSession, ThreadLocal, Cache, Cookie, ConcurrentHashmap(private bir çözüm olabilir) ?

Authentication işlemleri için herhangi bir framework kullanıyormusunuz? Spring Security, Apache Shiro gibi.. user session management'ı için kolaylık sağlar.

Yukarıda yapmaya çalıştığınız işlem bana göre bad practice. Kullanıcı login olduğu anda User objesini password bilgisini null set edip, diğer bilgilerini yukarıdaki örnek olabilecek bir yerde tutmalısınız.

Ihtiyaç duyduğunuzda get edersiniz.

(19 May '15, 14:30) Turgay Can Turgay%20Can's gravatar image

Authentication işlemleri için Spring Security kullanıyorum. Login olmuş kullanıcıyı nerede tuttuğumu açıkçası bilemiyorum. İnceleyip fikir vermek yardımcı olmak isterseniz kodların hepsi burada: https://github.com/ilkgunel/HospitalAutomationWithJavaEE

(19 May '15, 14:36) ilkay ilkay's gravatar image

login'i auto-config=true yapmışsınız, bu tür login deneyimlemedim ama eğer kullanıcı entity'niz User ise, (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal()

şeklinde almayı deneyiniz yada login kısmını tekrar yazmanız fayda var.

Custom bir Service ile SecurityContext içine login başarılı olmuş kullanıcı SecurityContext içine (set etmeniz)koymanız yönetimi için daha rahat olacaktır.

Bu örnek basit ve rahat : http://mprabhat.com/2012/07/11/spring-security-3-1-and-jsf-2-0-custom-form/

(19 May '15, 15:12) Turgay Can Turgay%20Can's gravatar image
Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281
×3
×1

Soruldu: 19 May '15, 11:05

Görüntüleme: 337 kez

Son güncelleme: 19 May '15, 15:12

powered by BitNami OSQA