JSP将setProperty传递给带有bean的java类

时间:2013-01-30 19:37:03

标签: java jsp

我如何在一些不是servlet的java类中使用session.getAttribute。这样的东西可能还是其他一些技巧?

<%    
    <jsp:useBean id="bean" class="ProfitBean" scope="application"/>
        <jsp:setProperty name="bean" value='<%=session.getAttribute("idUser")%>'/>
    %>

    public class ProfitBean{
    private int idUser;
    public void setIdUser(int IdUser){
    ...
    }
    public int getIdUser(){
    ...
    }
    }



    public class SomeClass{
    public void doSomething(){
    ProfitBean pb =new ProfitBean
    int userId = pb.getIdUser();

    }
    }

2 个答案:

答案 0 :(得分:0)

会话需要请求。因此,请求必须将userId传递给Application-Scope-ProfitBean。

在这种情况下,您可以使用Singleton反模式,因此ProfitBean.getInstance()。get / setIdUser()将包含相同的值。

private static ProfitBean profitBeanInstance;

@Deprecated
public ProfitBean(){
    profitBeanInstance=this;
}

public static ProfitBean getInstance(){
    if (profitBeanInstance == null) {
        NullPointerException cause = new NullPointerException();
        throw new IllegalStateException("The instance has not been created by blabla.jsp!", cause);
    }
    return profitBeanInstance;
}

警告:此单身人士可供任何用户使用。在“SomeClass”中,您无法确保用户设置此值。

答案 1 :(得分:0)

如果班级无法得到它,它应该要求它。

换句话说,只需在调用方法时将所需的值传递给它。

someClass.doSomething(session.getAttribute("idUser"));

或者,视具体情况而定。

someClass.doSomething(profitBean);