我在一个JSP页面的开始部分,在“<%%>”中提取数据库里的数据赋值到变量A中,然后在后面的html语句中通过<%=A%>显示出来,可是在第一次运行该页面时,显示空指针错误,第二次进入就好了。我找到原因,可能是第一次运行时,先执行<%=A%>语句,后执行“<%%>”里给变量A赋值的语句,所以出现空指针错误。
我该如何解决这个问题呢?谢谢

解决方案 »

  1.   

    我在“<%%>”中定义变量A时定义初始值了,可是还是显示空指针。我怀疑在运行<%=A%>语句的时候,根本就没有执行“<%%>”中的语句
      

  2.   

    判断一下,A为空的时候,new一个给他
      

  3.   

    andyan_2008,改如何写代码?
    比如:我的名字是<%=A%>
      

  4.   

    我想是你没有找到出问题的地方,<%
    String a = null;
    %>
    <%=a %>
    在jsp里这样写是不会出问题的,他会显示一个null,而不会报空,
      

  5.   

    如果是你采用了struts,最好在action里对A赋值并且放在request中,在JSP页面的时候使用<%=request.getAttribute("")>取出来,这样不会出问题。
    如果只是一个jsp页面,就不大好处理了,JSP页面第一次被访问是先要编译的,编译的时候可能不是自上而下的。
      

  6.   

    在使用前先判断下,为空则new一个
      

  7.   

    用EL表达式,就不会出现空指针异常了第二个好处是:假如A的年龄属性为空,
    jsp<%=A.getAge()%>页面中显示为null(不是想要的)
    而el表达式${A.age}页面中什么也不显示第三个好处:代码简洁,容易维护,但效率差不多,2者最终都是要编译成servlet的EL用法:
    要导入jstl.jar和standard.jar包就好了强烈建议抛弃这种方式<%=A%>,太麻烦了
    还要导入:实体类代码那么冗长
      

  8.   

    奥,忘了正题了,问题没回答,现在补充一下:在java代码中,把A存入request:
    request.setAttribute("var",A);在jsp中直接用
    ${ requestScope.A }
    就好了
    当然,要导入jstl.jar和standard.jar包另外,你的变量怎么大写啊,不符合规范啊
      

  9.   

    这个处理的方式显然是不太合适的,
    当第一次没有调用<%%>中的代码的时候怎么又会执行<%=a%> 
    如果非要强制的话只能NEW出一个新值, 或者你使用EL表达式,即使是空值也不会报错.
    但是这不是问题的根本, 建议你把代码贴出来看看 
      

  10.   

    你在数据库取值的时候做非空处理 如果是null 实例个对象 或者给个空串
    其实你这么做本身是存在问题的。
    最好是用mfc的思想 去实现  画面jsp就是从bean里面去取值  不用在jsp里面写大量java代码
    从DB取值在后台去做 设定到bean里面 在后台就处理好null