JSP 페이지에 CDI SessionScoped 빈을 주입하고 싶습니다.<jsp:useBean>을 통해 액세스되는 세션 범위의 CDI 빈은 서블릿과 다른 것으로 보입니다.
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
@SessionScoped
public class UserSessionBean implements Serializable {
private String email = "email";
public UserSessionBean(){}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
빈을이 방법으로 사용할 때 제대로 작동하고 JSP 페이지에 초기 값이 표시됩니다.
<jsp:useBean id="userSessionBean" class="package.UserSessionBean"/>
<jsp:getProperty name="userSessionBean" property="email"/>
문제점은 내 API 내의 다른 서블릿에서 호출하는 서비스에 동일한 bean을 삽입 할 때 발생합니다. 이 경우 JSP 페이지에서 업데이트 된 값을 얻지 못합니다. JSP 페이지와 서비스 내에서 다른 bean을 얻는 것처럼 보입니다.
Servlet에서 액세스되는 JSP와 서비스 레이어 내에서 동일한 SessionScoped bean을 사용하는 방법을 조언 할 수 있습니까?
AFAIK, 클래스에'@Named ("foo")'주석을 달고 있다면 빈은 "foo"라는 세션 속성에 저장됩니다. jsp : useBean과 jsp : getProperty는 1999 년에 훌륭했습니다. 이제 그들은 완전히 쓸모 없습니다. 대답에 대한 –