2012-03-19 33 views
1

コード:私はCを使用していたとき、私は空白の出力を得る:JSPページ内のforeach

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@page import="GeneralClasses.FooClass" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <c:forEach var="fromArray" items="${array}"> 
     <p> 
      ${fromArray} 
     </p> 
    </c:forEach> 
</body> 
</html> 

以下は、私が時に空白のページを取得する属性array

package GeneralClasses; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 

public class FooClass { 
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { 
    String[] array = {"a","b","java","programming","OS"}; 
    request.setAttribute("array", array); 
    }  
} 

を格納するクラスです私はjspファイルを実行します。 c:foreachタグを使用するにはどうすればよいですか?

答えて

1

JSTLタグが実行されない場合は、JSTLがまったくインストールされていないか、または古くなったJSTL 1.0バージョンのtaglib URIが使用されています。 JSTLが実行されたかどうかを確認する最も簡単な方法は、ブラウザでページを開くことです。右クリックしてソースを表示してください。そこにJSTLタグがまだ残っていれば、isは確実に実行されていません。

JSTLはデフォルトでは、より多くの本格的なアプリケーションサーバーにバンドルされていますが、Tomcat、Jettyなどのような小さくて単純なサーブレットコンテナではありません。必要なJSTL JARファイルをwebappの/WEB-INF/libフォルダまたはサーバー/libフォルダー。

詳細な背景情報については、see our JSTL wiki pageを参照してください。

ところで、あなたのサーブレットはHttpServletに拡張されておらず、JSPにはまったく転送されませんが、問題のコードを準備する際には単純化して過度に簡略化されていると仮定します。実際にサーブレットを介してJSPページを要求していない場合、その原因はまったく異なります。解決策は簡単です:サーブレットをJSPではなくURLで呼び出します。必要に応じてJSPを/WEB-INFで非表示にして、エンドユーザが誤ってURLで呼び出すことがないようにします。 our servlets wiki pageも参照してください。

その全体が<%@page import="GeneralClasses.FooClass" %>行である必要はありません。

+0

ありがとうございました。私はjspページを直接呼び出すことで、うまくいくはずです。今私はディスパッチャをリクエストし、JSPページに要求をディスパッチしました。 –

関連する問題