Tôi đã triển khai biểu mẫu đăng nhập bằng JSF và PrimeFaces. Tôi đã sử dụng this example trong trang web giới thiệu PrimeFaces.Làm cách nào để truy cập thuộc tính phiên trong trang Facelets
Tôi có trang Facelets để hiển thị bảng dữ liệu. Bây giờ tôi cần tích hợp mẫu đăng nhập ở trên với trang bảng này. Vì vậy, tôi đã thêm vài dòng vào LoginBean.java để xử lý thuộc tính session.
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
...
tôi cần phải che giấu một cột từ DataTable, nếu người dùng không đăng nhập. Bây giờ vấn đề của tôi là, làm thế nào tôi có thể truy cập vào thuộc tính phiên bên trong trang Facelets của tôi?
Cảm ơn BalusC. Nhưng tôi đã nhận người dùng làm đối tượng trong chế độ xem. một cái gì đó như thế này cho thấy "User @ 1a8b71e". Dù sao tôi có một phần từ câu trả lời của bạn để giải quyết vấn đề của tôi. Tôi đã xóa phần cài đặt phiên và đặt lớp LoginBean là SessionScoped. Và tôi đã có thể nhận được các giá trị trực tiếp bên trong tag panelGroup của tôi.Cảm ơn một lần nữa cho lời khuyên SQL. Tôi đã thay đổi nó bằng cách sử dụng báo cáo chuẩn bị. –
Rõ ràng 'tên người dùng' như được hiển thị trong mã của bạn không phải là một' Chuỗi'. Có lẽ bạn đã quá đơn giản hóa mã trong câu hỏi? Theo cách bình luận SQL không có nghĩa là gợi ý về các câu lệnh chuẩn bị. Bạn đang so sánh tên người dùng và mật khẩu ** hai lần ** (một lần trong DB và một sau đó trong Java). Điều này không có ý nghĩa. Chỉ cần kiểm tra xem DB có trả lại một bản ghi hay không, đó là tất cả. Bạn không cần phải so sánh tên người dùng/mật khẩu một lần nữa mà bạn đã yêu cầu DB kiểm tra và trả lại. – BalusC
OK! nhưng trong truy vấn sql cuối cùng của tôi, tôi chỉ sử dụng tên người dùng với mệnh đề Where. như: String query = "SELECT username, password FROM user WHERE username = '" + uname + "';"; Vì vậy, tôi có thể chỉ cần loại bỏ username.equals (getUsername_db() một phần.Tôi chỉ cần kiểm tra mật khẩu trong trường hợp này ... cảm ơn cho bạn gợi ý –