2016-07-01 9 views
1

hrefをクリックしてServletを呼び出します。jspで呼び出すとrequest.getAttributeがnullになります

<li ><a href="<%=request.getContextPath() %>/ProviderServlet">privilegeManagement</a></li> 

このコードは、main.jspに含まれているnavigation.jspに含まれています。

それは私のサーブレットです。

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    ProviderDao pd = new ProviderDao(); 
    List<ProviderArchives> list = pd.getArchives(); 
    String str = "chenfeng"; 
    req.setAttribute("list", list); 
    req.setAttribute("hu" , str); 
    getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(req,resp); 
} 

それは私のmain.jspです。私は、サーバー上でこれを実行すると

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@page import="java.util.*"%> 
<%@page import="com.chenfeng.javabean.ProviderArchives"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!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>main</title> 
</head> 
<body> 
    <%@ include file="navigation.jsp"%> 
    <div> 
     <%@ include file="management.jsp"%> 
    </div> 
    <div> 
     <% 
      String k = (String)request.getAttribute("hu"); 
      out.println(k); 
     %> 
     <c:forEach items="${list}" var="item"> 
     <tr> 
     <td>${item.provideID() }</td> 
     <td>${item.GID }</td> 
     <td>${item.Gname }</td> 
     <td>${item.PID }</td> 
     <td>${item.TEL }</td> 
     <td>${item.ADDR }</td> 
     <td> 
     <a href="QueryUserByIdServlet?id=${item.provideID }">Modify</a> 
     <a href="DeleteUserServlet?id=${item.provideID }">Delete</a> 
     </td> 
     </tr> 
     </c:forEach> 
    </div> 
</body> 
</html> 

はその後、それがどんな助けを事前にこの result 感謝のように示しています!

+1

あなたは属性 'hu'を使用していないので、なぜそこにもありますか? 'list'属性がnullでないことを確認しましたか? –

+0

あなたのサーバーのログを確認してください私はあなたがあなたのアドバイスを使用している理由ではないと – Taha

答えて

-1

非常に明確です。 Servlet Context Objectを転送しているときにattributeRequest Objectに設定してください。 の代わりに:

getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(req,resp); 

書き込み:

req.getRequestDispatcher("/jsp/main.jsp").forward(req,resp); 
+0

気づいていない例外があると思うと思う。getServletContext()はプロジェクトの絶対パスを取得しますが、req.getRequestDispatcherは相対パスです。 –

+1

@JingHuそして、Timが言ったように、あなたのリスト変数をチェックしてください。 nullの可能性があります。 –

0

実は、私はビルドディレクトリにクラスファイルを削除した後、これはproblem.The本当の問題ログ出力に日食実行をcode.Butために理由がありませんそれをもう一度構築してください。

関連する問題