SpringMVCには基本的なアプリケーションがあります。私のすべてのコントローラは、以下に示すスーパークラスを継承しています。 コントローラメソッドに触れるたびにcssFiles
とjsFiles
がリセットされないという問題があります。だから、content/view.js
が読み込まれ、ページビューごとにx+1
回が終わることになります。ページを3回ロードした場合、それには4つのcontent/view.js
ファイルが含まれます。各ページビューの値をリセットする方法
ページが読み込まれるたびにこれらの値が追加されるのが見えます。なぜこれが起こっているのですか?それをどうやって修正しますか?
public class Controller {
private List<String> cssFiles = new ArrayList<String>();
private List<String> jsFiles = new ArrayList<String>();
public Controller() {
this.addCss("global");
this.addJs("http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min");
this.includejQueryUI();
this.addJs("global");
}
public ModelAndView prepareModel (ModelAndView model) {
model.addObject("cssFiles", cssFiles);
model.addObject("jsFiles", jsFiles);
return model;
}
public ModelAndView prepareModel (ModelAndView model, String title) {
model.addObject("title", title);
return prepareModel(model);
}
/*
* Add a css file to the page
*/
public void addCss (String cssPath) {
if (cssPath.indexOf("://") < 1) {
cssPath = "/cmt/css/"+cssPath;
}
cssFiles.add(cssFiles.size(), cssPath);
}
/*
* Add a javascript file to the page
*/
public void addJs (String jsPath) {
if (jsPath.indexOf("://") < 1) {
jsPath = "/cmt/js/"+jsPath;
}
jsFiles.add(jsFiles.size(), jsPath);
}
/**
* Add a Rich Text Editor (TinyMCE) library to the page
*/
public void includeRichTextEditor() {
addJs("../lib/tiny_mce-3.5b3/tiny_mce");
}
/**
* Add the jQuery UI library to the page
*/
public void includejQueryUI() {
addCss("../lib/jquery-ui-1.8.19/custom-theme/jquery-ui-1.8.19.custom");
addJs("../lib/jquery-ui-1.8.19/jquery-ui-1.8.19.custom.min");
}
}
私はまだこの問題の原因を特定するのに苦労しています....アイデアはありますか?親コントローラは常に生きているかのweb.xml
<!-- Standard spring configuration -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<!-- Spring Web MVC dispatcher servlet -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
あなたの質問とは別に、あなたはページの装飾を行うためにsitemeshを見ましたか?私はcss/jsファイルがこのように提供されるのを見たことはありません。通常、すべてのページを装飾するメインjspxがあり、標準のhtmlを使用しているCSSとjsインクルージョンがすべて含まれています... – Kevin
コントローラは春設定でどのように定義されますか?各リクエストの前にリットを手動でリセットしない場合、コントローラはリクエストスコープになるように定義する必要があります – Dominik
この投稿を自分の設定に更新しました。これはあなたが話していたことですか?私はここで何を調整すべきか分かりません。 – Webnet