7

私は JSP の初心者であり、大量のカット アンド ペースト コードを削減しようとしています。
プロジェクトの各ページには、JSP、Struts タグ、JSTL タグ、および HTML が混在する約 25 行があり、ページのさまざまなポイントでカット アンド ペーストされています。これらの約 25 行の再利用されたコードは、ページ間 (および約 250 ページ) でまったく似ていませんが、各ページ内ではまったく同じです。最終的には、この (ビジネス ロジック) コードはビューから移動する必要がありますが、そうすると、現時点で私のスケジュールが許すよりも大きなプロジェクトになるため、Mixed Tags+JSP を再利用する簡単な方法があるかどうか疑問に思っています。ページ内で一時的な修正として、時間の許す限りコードを段階的にリファクタリングできるようにします。

わかりやすくするために、新しいファイル (/local からページ スコープ) を作成せずにコードをカプセル化する方法を探しています。つまり、呼び出し元と同じページで定義する必要があります。

タイルでこれを行うことができると示唆する人もいます。その場合は、その方法を教えてください。

4

3 に答える 3

7

Apache tilesを見てください。あなたは Struts を扱っているので、まだ Struts を見つけていないことに驚きました。基本的にはテンプレートエンジンであり、要件に合っていると思います。

すでに提案さ<jsp:include>れている を使用して<jsp:param>、変数を渡すことができます。お気に入り

<jsp:include file="includedFile.jsp">
    <jsp:param name="username" value="jsmith" />
</jsp:include>

実際、共通コードを含むファイルを 1 つだけ含めたい場合は<jsp:include>、Tiles の力よりもシンプルさをお勧めします。

于 2010-01-06T07:39:51.590 に答える
2

1つのインクルードファイルを作成し、必要に応じてjsp:includeを作成できます。可変部分は、jsp条件、jstl EL属性、またはstrutsELを使用して実行できます。

既存のページはすでに機能しているので、必ずしも再コーディングする必要はありません。

于 2010-01-06T05:17:00.553 に答える
1

Struts タイルは、すべてのページに共通する部分を毎回コーディングする必要がないように、特定のページをテンプレート化するために Struts で使用するのに最適です。http://struts.apache.org/1.x/struts-tiles/を参照してください。

JSP に非常に特化した、より単純なアプローチは、前述の jsp:include です。

参考までに、インクルード ディレクティブのアプローチである 3 番目のアプローチがあります。

jsp:include と include ディレクティブの違いは次のとおりです。

次の場合にのみ、インクルード ディレクティブ (< @ include file relativeURL >) を使用する必要があります。1) ファイルに静的テキストが含まれる場合 2) ファイルがほとんど変更されない場合 (このタイプのインクルード ファイルが変更された場合、JSP エンジンは JSP を再コンパイルしない場合があります) 3) 複数のページで再利用できる共通のコード スニペットがある場合 (例: ヘッダーとフッター)

jsp:include を使用する必要があるのは、1) 含まれる JSP のコンテンツが動的であり、実行時に変更される可能性がある場合、2) 実行時にレンダリングするコンテンツを選択する場合 (page および src 属性が実行時の式を使用できるため)。

これがあなたの決定に役立つことを願っています。

于 2010-01-06T07:50:55.180 に答える