2016-11-21 13 views
0

방금 ​​로그인 관리 빈을 작성하여 완벽하게 작동합니다. 이메일과 비밀번호의 가치가 필요합니다. JSF 하나의 관리 빈에서 다른 것으로 인수 값으로 얻기

지금, 내 문제는 내 UserBean.javaLoginBean.java에 의해 얻은 이메일의 가치를 전달하는 방법이다.

index_customer.xhtml

<h:outputText value="#{userBean.firstname}"/> 

UserBean.java

@ManagedBean(name="userBean") 
public class UserBean { 
    private static String firstname; 
    private String lastname; 
    private String email; 
    private String password; 

    public String firstname(String email){ 
     String fname; 
     UserDAOImpl userDAOImpl = new UserDAOImpl(); 
     fname = userDAOImpl.getFirstName(email); 
     return fname; 
    } 

} 

LoginBean.java

@ManagedBean(name = "loginBean") 

public class LoginBean { 

    private String email; 

    public String getEmail() { 
     return email; 
    } 
} 

어떻게 나는 getEmail() 메서드를 호출하고 UserBeanfirstname(email) 메서드에 인수로 전자 메일을 제공합니까?

이것이 가능합니까? 내가 물어 이유는 내가 전에 스윙과 협력 <h:outputText value="#{userBean.firstname}"/>

에 EL 표현식을 사용하여 로그인 한 사용자의 이름을 확인하고 "안녕하세요 YourFirstName"뭔가를 보여주고 싶은,하지만 난이 일이 있다는 것을 알고 웹마다 다르므로 정적 변수가 JSF의 한 클래스에서 다른 클래스로 변수 값을 가져 오는 올바른 방법이 아닌 것 같습니다.

UserDAOImpl.getFirstName(email) 방법은 사전에

String SQL = "SELECT firstname from customer WHERE emailcolumn = email; 

감사 인 SQL 쿼리를 가지고있다. 나는 어떤 도움을 주셔서 감사합니다.

+0

주사에 대해 자세히 알아보십시오. 그리고 jsf를 처음 사용하는 경우에는 jsf와 관련없는 (일종의) 특정 jsf 대신 cdi managed beans를 사용하십시오 – Kukeltje

답변

1

매개 변수로 firstName 메서드에 getEmail의 반환 값을 전달하기 만하면됩니다.

<h:outputText value="#{userBean.firstname(loginBean.email)}"/> 

물론 다른 세부 정보가 있습니다. 이 범위의 데이터는 세션 범위 Bean에 보관해야합니다. 그리고 모든 get에 대한 데이터베이스 액세스가 너무 건강하지 않습니다.

How to choose the right bean scope?