<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"><html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>test Page</title>
    </head>
    <body>
        <%
        String B=(String)request.getParameter("B");
        %>
        按钮的值是---<%=B%><br/><br/>
        按钮是否为null:<br/>
        <%=(B==null)%>
        <c:out value="${B==null}"/>
        <form action="test.jsp" method="post">
            <input type="submit" name="B" value="确定" />
        </form>
    </body>
</html>
写了一个测试的,用<%= %>和 ${ }判断同一个变量却有不同的答案。
第一次进入页面,没有按按钮,所以B的值为null,用<%=(B==null)%>和"${B==null}"都显示为true。
按过一次按钮后,重载这个页面,显示B的值变成一个乱码了,应该就是表示按过了,但是<%=(B==null)%>显示为false,"${B==null}"显示还是true
这是怎么回事?

解决方案 »

  1.   

    乱码,你把<%=B%>改成<%=new String(B.getBytes("GBK"), "ISO-8859-1")%>
    你没把B放到到request里面的属性里,${B}还是null
    request.setAttribute("B",B)
      

  2.   

    因为你在点击动作后页面变量b的值改变了,所以b不为null了<%%>这个是取页面变量
    而你这点击动作不会对后台对象的b属性赋值,所以${b}不会改变还是null
      

  3.   

    ·乱码,你把 <%=B%>改成 <%=new String(B.getBytes("GBK"), "ISO-8859-1")%> 
    你没把B放到到request里面的属性里,${B}还是null 
    request.setAttribute("B",B)