2014-03-24 43 views
0

我工作的一個項目,當我遇到這個奇怪的錯誤來無法運行在JSP頁面匹配方法

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ page import="java.io.*,java.util.*,java.sql.*,java.util.regex.*"%> 
<%@ page import="javax.servlet.http.*,javax.servlet.*" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%> 

<html> 
<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
    <h1>SignUp Page</h1> 
     <form action="NewFile.jsp" method="post"> 
     <br/>Email address<input type="text" name="email"> 
     <br/><input type="submit" value="submit"> 
     </form> 
     <% 
         Pattern pattern; 
        Matcher matcher; 

    final String email=request.getParameter("email"); 
     Pattern pt=Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"); 
     Matcher mt=pt.matcher(email); 
     boolean bl=mt.find(); 

    if(!bl) 
    { 
     response.sendRedirect("SignUpError.jsp"); 
    } 
    %> 
    </html> 

的問題,我在該行

Matcher mt=pt.matcher(email);

enter image description here得到一個錯誤

+0

但它應該在jsp中工作的權利?我專門搜索了適用於JSP的正則表達式,但它不起作用。 –

+1

是'email' non-null? –

+0

@JigarJoshi我甚至沒有被帶到頁面輸入電子郵件地址,在我訪問頁面 –

回答

1

調試request.getParameter("email")其空。

這裏是如何產生的錯誤:

Matcher m = Pattern.compile(".").matcher(null); 

異常,你會得到:

Exception in thread "main" java.lang.NullPointerException 
    at java.util.regex.Matcher.getTextLength(Matcher.java:1140) 
    at java.util.regex.Matcher.reset(Matcher.java:291) 
    at java.util.regex.Matcher.<init>(Matcher.java:211) 
    at java.util.regex.Pattern.matcher(Pattern.java:888) 
Java Result: 1 

爲了克服這個錯誤,這樣做:

if(email != null){ 
    Matcher mt=pt.matcher(email); 
    boolean bl=mt.find(); 
    ... other stuffs 

} 
+0

優秀,,謝謝 –