如何在JSP中获取Bean数据

时间:2012-07-07 08:59:47

标签: jsp jsf jsf-2 javabeans

我在会话范围内将bean定义为PersonBean

我想要的是在jsp页面中找到PersonBean.personId

我想在jsp页面中使用它,因为我想根据这个personId进行一些计算。任何人都知道如何获得相同的。

在JSP中,我可以使用jsf

打印相同的内容
<h:outputText value="#{PersonBean.personId}" />

但是我需要将此值赋值给jsp中的某个整数值,如下所示。

<h:outputText value="#{PersonBean.personId}" />
<%
   int i = new PersonBean().getPersonId;
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%>

我认为int i = new PersonBean().getPersonId;可行,但不起作用。知道我怎么得到这个吗?

更新1

我也试过

<jsp:useBean id="sessionPersonalDataBean" class="com.sac.databean.PersonalInformationDataBean" scope="session"/>
<%
   out.print("my id is " + sessionPersonalDataBean.getPersonId());
%>

我的输出仍然是my id is 0,而不是my id is 0

注意:

当我使用时,<h:outputText value=#{PersonalInformationDataBean.personId} />我得到了正确的输出。

1 个答案:

答案 0 :(得分:1)

你应该避免使用JSP中的scriptlet,但要回答你的问题:JSP是一个servlet。如果bean存储在属性“PersonBean”下的会话范围中,那么只需从会话中获取它:

PersonBean p = (PersonBean) request.getSession().getAttribute("PersonBean");

如果它存储在属性“PersonalInformationDataBean”下,则代码当然是

PersonBean p = (PersonBean) request.getSession().getAttribute("PersonalInformationDataBean");

代码new PersonBean()创建一个新的PersonBean实例,因此,该实例没有理由与会话中存储的实例具有相同的ID。这是非常基本的Java东西,我建议在使用JSF之前学习更多关于Java语言和基本OO概念的知识。