2012-03-16 2 views
1

現在、Webアプリケーションではstruts2-jqueryプラグインを使用しています。プラグインは素晴らしいですが、私はstruts2プラグインの内部動作についていくつか質問しています。struts2プラグインのしくみ

プラグインをクラスパスに追加し、taglibで定義されたタグを使用できます。私は私が頼みの綱が正しく含まれていることを見ることができます生成されたページのソースコードで見ると:

<script type="text/javascript" src="/struts/js/base/jquery-1.x.x.min.js"></script> 
<script type="text/javascript" src="/struts/js/base/jquery-ui.min.js"></script> 
... 

最初の質問は、どのように私たちのウェブアプリケーションは、jQueryプラグインにその /struts/ポイントを知っているん。それについては何も定義していませんでした。 DefaultStaticContentLoaderクラスから来ているようです。このような方法があります:

public boolean canHandle(String resourcePath) { 
    return serveStatic && (resourcePath.startsWith("/struts/") || resourcePath.startsWith("/static/")); 
} 

2番目の質問は、私たちは、アプリケーションがオクテットストリームとしてプラグインからファイルをダウンロードし/struts//struts/themes/のようなURLを呼び出すときに(最終的な結果は、zipファイルのようですということですcss、js、イメージファイルを含む)。なぜそれをやっているのか、それを防ぐ手段があるのです。

2番目の質問は最初の質問よりも重要です。

ありがとう、トム。

EDIT:質問1が回答されました。

答えて

2

Well Pluginは、S2の機能を拡張し、S2ユースケースの動作方法を変更するために提供されました。 Struts 2プラグインには、既存のStrutsフレームワーク機能を拡張、置換、または追加するクラスと構成が含まれています.Pluginには、プラグインのエントリポイントであるS2を示すstruts-plugin.xmlファイルが含まれている必要があります。

したがって、S2の起動時に、特定の方法でシーケンスをロードします。

  1. 支柱-default.xmlの
  2. 支柱-plugin.xmlの
  3. struts.xmlだからプラグイン(JAR)の一部である、plugin.xmlのストラット

はによってロードされますS2とそれ自身の存在を登録します。詳細は

jQueryプラグイン用の支柱-のplugin.xmlファイル内の典型的なエントリがあることS2を告げる

<struts> 
    <bean type="org.apache.struts2.views.TagLibrary" name="sj" class="com.jgeppert.struts2.jquery.views.JqueryTagLibrary" /> 
</struts> 

ある公式文書

を参照してください。 JqueryTagLibraryはプラグインのエントリポイントです。静的コンテンツの読み込みについて言及したものは、デフォルトのS2処理です我々が標準的なメカニズムを提供しなくなるまで、

Strutsは、StaticContentLoaderのデフォルトの実装であるorg.apache.struts2.dispatcher.DefaultStaticContentLoaderを提供します。このローダーは "/static/"で始まるURLを処理します。静的コンテンツは、プラグインからS2によって提供されている方法の詳細については、それは瓶をスコアから は、doc

+0

ありがとうございます。これは、ストラットのURLのソースに私を指摘した。 – tom

0

2番目の質問への答えは、クラスDefaultStaticContentLoaderから来ているを参照してください。 findStaticResourceメソッドは、フォルダまたはファイルの間に違いはなく、したがって、それがフォルダであっても、指定されたURLのストリームを開きます。

関連する問題