2012-09-21 104 views
0

我有一個servlet,我想在其中比較請求參數。我用下面的代碼比較JSP中的請求參數

<body> 
    <% 
     if(request.getParameter("type")!=null) 
       { 
      if(request.getParameter("type").equals("recover")) 
            { 
    %> 
       <h1>Recover</h1> 
    <% 
       } 
          } 
        else if(request.getParameter("type")!=null) 
          { 
         if(request.getParameter("type").equals("reset")) 
                 { 
    %> 
    <h1>Reset</h1> 
    <% 
      } 
               } 
     %> 
</body> 

但這JSP提供了一個編譯時異常堆棧跟蹤如下

org.apache.jasper.JasperException: An exception occurred processing JSP page /recover.jsp at line 16 

</head> 
<body> 
    <% 
     if(request.getParameter("type").equals("recover")) <--- line16 
       { 
    %> 
    <h1>Recover</h1> 

我不知道怎麼回事錯了,因爲這是比較字符串的正確方法。

+0

在我的jsp中工作正常,在堆棧跟蹤中還有其他的東西嗎? –

回答

1

你爲什麼不使用JSTL來代替:

<c:if test="${param.type == 'recover'}"> 
    <h1>Recover</h1> 
</c:if> 
<c:if test="${param.type == 'reset'}"> 
    <h1>Reset</h1> 
</c:if> 

你就不必關心參數是空的,這將是乾淨多了。 scriptlet不應該再使用了。這對於一個懶惰的時代來說是真實的。

+0

謝謝。它爲我工作,它也乾淨;) – kaysush

0

request.getParameter()可以返回null,您可能需要在執行.equals()之前檢查並確保返回值不爲空。