JSF ve PrimeFaces kullanarak bir giriş formu uygulamıyorum. PrimeFaces vitrin web sitesinde this example kullanıyorum.Facelets sayfasındaki oturum özniteliğine nasıl erişebilirim?
Bir dataTable göstermek için bir Facelets sayfam var. Şimdi yukarıdaki giriş formunu bu tablo sayfasıyla bütünleştirmem gerekiyor. Bu yüzden session özniteliğini işlemek için LoginBean.java'ya birkaç satır ekledim.
if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {//valid user and paward
loggedIn = true;
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", getUsername_db());
//new lines
FacesContext context2 = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context2.getExternalContext().getSession(true);
session.setAttribute("user", username);
//end of new lines
...
kullanıcı oturum değilse ben, DataTable bir sütunu gizlemek gerekir. Şimdi benim sorunum, nasıl benim Facelet'lerin sayfası içindeki oturumu özelliğini erişebilir edilir?
Teşekkürler BalusC. Ama kullanıcıyı görüşte bir nesne olarak aldım. Bunun gibi bir şey "Kullanıcı @ 1a8b71e" gösterdi. Her neyse benim problemimi çözmek için cevabınızdan aldım. Oturum ayarları bölümünü kaldırdım ve LoginBean sınıfını SessionScoped olarak ayarladım. Ve doğrudan panelGroup etiketinin içinde değerler elde edebildim. SQL tavsiyesi için tekrar teşekkürler. Hazırladığı ifadeleri kullanarak değiştirdim. –
Görünüşe göre 'kullanıcı adı' kodunuzda gösterildiği gibi bir "String" de değil. Belki de sorudaki kodu sadeleştirdiniz? Bu arada, SQL yorumu hazırlanmış ifadeler hakkında ipucu vermek anlamına gelmiyordu. Kullanıcı adını ve şifreyi ** iki kez ** karşılaştırıyorsunuz (bir kez DB'de ve Java'da bir daha sonra). Bu hiçbir anlam ifade etmiyor. Sadece DB'nin bir rekor getirip getirmediğini kontrol et, hepsi bu. Kullanıcı adının/parolanın bir kez daha karşılaştırılmasının gerekmediğini ve DB'yi kontrol edip geri göndermesini istediniz. – BalusC
Anladım! ama son sql sorgumda sadece Where cümlesiyle sadece kullanıcı adı kullandım. like: String query = "Kullanıcı adı ve şifreyi SEÇİN Kullanıcıdan WHERE kullanıcı adı =" "+ uname +" '; "; Bu yüzden sadece username.equals (getUsername_db() kısmını kaldırabilirim. Sadece bu durumda şifreyi kontrol etmem gerekiyor ... öneriniz için teşekkürler. –