我在会话范围内将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;
可行,但不起作用。知道我怎么得到这个吗?
我也试过
<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} />
我得到了正确的输出。
答案 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概念的知识。