27

映画の詳細を HTML ページに表示する必要があるプロジェクトがあります。Spring や Struts などのフレームワークは使用していませんが、MVC に厳密に従う必要があります。また、スクリプトレットの使用は許可されていませんが、JSTL と式言語の使用は許可されています。私は通常、データベースからデータを取得して Bean に設定し、それらの Bean のリストを作成して JSP に渡し、それらの詳細を出力します。しかし、JSPの使用が許可されていない場合、どうすればそれを達成できますか. サーブレットを使用してこれらのデータを取得し、それを Bean に設定してからリストに設定し、リクエスト ディスパッチャーを介して渡す場合、HTML ページのリストから各 Bean を取得するにはどうすればよいでしょうか?

このJSTLを機能させることができませんでした。Netbeans 7.0 と Apache Tomcat 7 を使用しています。

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>DVD Guru</title>
        <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    </head>
    <body>   
     <div id="wrapper">     
        <c:set var="testing" value="blah"/>
                <c:out value="${testing}"/>
        </div>      
    </body>
</html>

次のエラーが表示されます

TLD またはタグ ファイルの属性ディレクティブによると、属性項目は式を受け入れません

プロジェクト プロパティから JSTL 1.1 ライブラリをインポートしました。他にすべきことはありますか?

4

6 に答える 6

64

JSPJSTLを使用する必要があります- カスタムタグのセットであり、個別に使用することはできません。式言語と同様に。MVC フレームワークを使用していない場合は、それらの作業の一部を自分で行う必要があります。次の設計パターンを (まだ見ていない場合は) 見てください。

  1. Front ControllerCommand簡単なアプリケーション用
  2. Front ControllerView Helperより複雑なアプリケーションの場合

更新日:

EL の問題を解決するには、JSP の JSTL uri を次のように修正してください。

 <%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
于 2012-11-17T09:27:44.737 に答える
27
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

JSTL taglib URI が間違っています。あなたが持っているものは、レガシーJSTL 1.0用です。JSTL 1.1 以降/jsp、taglib URI に追加のパスがあります。これは、式言語 (これらの${}もの) が JSTL から JSP に移動されたため、JSTL 1.0 と 1.1 の taglib は互換性がないためです。

それに応じて修正します。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

web.xmlNetbeans がTomcat 7と互換性のある Servlet 3.0 を自動生成するのに十分スマートであると仮定すると、これ以上何もする必要はありません。

以下も参照してください。

于 2012-11-19T14:36:21.547 に答える
10

JSTL taglib uri を次のように変更します。

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

それは魅力のように機能します。

于 2013-05-25T16:37:03.427 に答える
2

文字列を連結してもHTMLを生成できます。または、単純な JMTE (Java Minimal Template Engine) のようなテキスト テンプレート エンジン、または Velocity や StringTemplate のようなより高度なテキスト テンプレート エンジンを使用することもできます。別のテンプレート エンジンを使用すると、JSP を使用しないことを勇敢に宣言できます。JSP と他のテンプレート エンジンの違いはあまりわかりませんが、これはあなたの要件が馬鹿げているということです。

さらに良いことに、JSP を使用せず、JSF 2 を使用してください。)

于 2012-11-17T09:57:04.667 に答える
2

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>代わりに プレフィックスを使用してみてください<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

于 2014-09-08T17:44:21.717 に答える
0

randIntjstl XMLで変数を使用しようとしたときにこの問題に直面しました.inを使用したい<x:out select/>:

<x:out select="$parsedXML/content/${randInt}/title"/>

を使用して解決しましたpageContext

<%
    Random rand = new Random();
    int randInt = rand.nextInt();
    pageContext.setAttribute("randInt", randInt);
%>
<x:out select="$parsedXML/content/article[$pageScope:randInt]/title"/>
于 2015-08-28T02:43:16.800 に答える