日期:2014-05-20  浏览次数:20788 次

如何在javabean中获取页面的内置对象application呢?
getServletContext(),是myEsplise自己生成的,我在页面中代码是:
<%

ArrayList   a;
a=(ArrayList)application.getAttribute( "IdList ");
if(a==null)
{
a=new   ArrayList();
a.add(session.getId());
application.setAttribute( "IdList ",a);
}
else
{
for(int   i=0;i <a.size();i++)
{
  if(a.get(i)!=session.getId())
  a.add(session.getId());
}
application.setAttribute( "IdList ",a);
}
%>
<P> you   is   <%=   ((ArrayList)application.getAttribute( "IdList ")).size()%> come   in
在这里size的大小是1.


这是后台javabean的一段代码.我是想log住Idlist中的内容,在这里
application.getAttribute( "IdList ")中就是null,我想问一下,ServletContext是application的Servlet表现形式吧,但是我怎么获得这个服务器的应用实例呢??
ServletContext   application=getServletContext();
logger.info(session.getAttribute( "RemoteAddr "));
logger.info(session.getAttribute( "RemoteHost "));
logger.info(session.getAttribute( "Locale "));
logger.info(session.getAttribute( "Visit "));

if(application.getAttribute( "IdList ")!=null)
{
for(int   i=0;i <((ArrayList)application.getAttribute( "IdList ")).size();i++)
logger.info(((ArrayList)application.getAttribute( "IdList ")).get(i));
}


private   ServletContext   getServletContext()   {
//   TODO   Auto-generated   method   stub
return   null;
}

------解决方案--------------------
把Idlist传给javabean就行,不需要传application吧。
设置一个javabean的List属性。

之后看下边设置。
<jsp:useBean id=“calculator“ scope=“request“ class=“com.jspdev.SimpleCalculator“>
<jsp:setProperty name=“calculator“ property=“*“/>
</jsp:useBean>

(1)property=”*”
设置Bean 属性的快捷方式,在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。
(2)property=“propertyName“
使用request对象中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean 的属性名,而且Bean 属性和request参数的名字应相同。也就是说,如果在Bean 中有setUserName(String userName)方法,那么,propertyName的值就是“userName“