Spring MVCで静的コンテンツを処理する方法


200

私はSpring MVC 3を使用してWebアプリケーションを開発しており、DispatcherServlet「/」へのすべてのリクエストをそのようにキャッチしています(web.xml):

  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

これは宣伝どおりに機能しますが、静的コンテンツをどのように処理できますか?以前は、RESTful URLを使用する前に、たとえばすべての* .htmlをキャッチしてに送信していましたDispatcherServletが、今は別の球技です。

/ styles /、/ js /、/ images /などを含む/ static /フォルダーがあり、/ static / *をから除外したいDispatcherServlet

これで、静的リソースを機能させることができました。

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/</url-pattern>
  </servlet-mapping>

しかし、私はランディングページがwww.domain.com/app/ではなく、素敵なURL(Spring MVC 3を使用している点)が欲しいです

また、tomcatやその他のサーブレットコンテナーに結合されたソリューションも必要ありません。これは(比較的)トラフィックが少ないため、前面にWebサーバー(apache httpdなど)は必要ありません。

これに対するクリーンな解決策はありますか?



回答:


266

私はこの問題に多くの時間を費やしたので、自分の解決策を共有したいと思いました。Spring 3.0.4以降、サイトのルートでDispatchServletを使用しながら静的リソースを提供するために使用できる(参照ドキュメントのWebサイトの<mvc:resources/>詳細について)呼び出される構成パラメーターがあります。

これを使用するには、次のようなディレクトリ構造を使用します。

src/
 springmvc/
  web/
   MyController.java
WebContent/
  resources/
   img/
    image.jpg
  WEB-INF/
    jsp/
      index.jsp
    web.xml
    springmvc-servlet.xml

ファイルの内容は次のようになります。

src / springmvc / web / HelloWorldController.java:

package springmvc.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorldController {

 @RequestMapping(value="/")
 public String index() {
  return "index";
 }
}

WebContent / WEB-INF / web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>
</web-app>

WebContent / WEB-INF / springmvc-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <!-- not strictly necessary for this example, but still useful, see http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-controller for more information -->
 <context:component-scan base-package="springmvc.web" />

    <!-- the mvc resources tag does the magic -->
 <mvc:resources mapping="/resources/**" location="/resources/" />

    <!-- also add the following beans to get rid of some exceptions -->
 <bean      class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
 <bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
 </bean>

    <!-- JSTL resolver -->
 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>

</beans>

WebContent / jsp / index.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h1>Page with image</h1>
<!-- use c:url to get the correct absolute path -->
<img src="<c:url value="/resources/img/image.jpg" />" />

お役に立てれば :-)


12
この例は、Springユーザーガイドにあるはずです。これは、このトピックで見た中で最高のものです。ジョリス、ありがとう!
Paul

これは間違いなく私にとってトリックでした-単にrozkyのアドバイスが私が始めたものですが、何らかの理由で私のホームページ以外のページがリソースURLをページに対して相対的にレンダリングしていました-このアドバイスに従うとそれらが相対的にレンダリングされました代わりに私のアプリのコンテキストルートに-そして完全に動作します!ありがとう!
ベイン

ありがとう!次の行を変更するまで髪を引っ張っていました:<mvc:resources mapping = "/ resources / **" location = "/、classpath:/ META-INF / web-resources /" /> to <mvc:resources mapping = "/ resources / **" location = "/ resources /" />
マークD

2
@Baneが指摘したように、<c:url value = ... />はこのソリューションの重要な部分です。理由を教えていただけますか?ありがとう!
マーク・

4
<mvc:resources mapping = "/ **" location = "/ resources /" />を使用することもでき、ルートにマップされます。(つまり、ルートにはリソースとjspの両方が含まれます)。これにより、どこでもc:urlを使用して節約できます
efaj

46

この問題は、Spring 3.0.4.RELEASEで解決されており、Spring <mvc:resources mapping="..." location="..."/> ディスパッチャー構成ファイルで構成要素を使用 できます。

Springのドキュメントを確認する


5
実際には「間違っている」わけではありませんが、Spring自体のドキュメント(回答として参照したもの)に何か不足しているように見えるため、この回答は短すぎます。より完全な回答については、Jorisの回答を確認してください...長いという事実ではなく、彼が<c:url ...>の使用に言及していること、そしてあなたの回答もSpringのdoxも言及していないこと、そしてソリューションの重要な部分です。
ベイン

38

Spring 3.0.xでは、次の内容をservlet-config.xml(web.xmlでcontextConfigLocationとして構成されているファイル)に追加します。mvc名前空間も追加する必要がありますが、方法がわからない場合はGoogleで追加してください。 !;)

それは私のために働く

<mvc:default-servlet-handler/>

よろしく

アユブ・マリク


この行を追加すると、次のようになります。org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:クラスパスリソース[META-INF / spring / application-context.xml]のXMLドキュメントの行31は無効です。ネストされた例外はorg.xml.sax.SAXParseExceptionです。lineNumber:31; columnNumber:35; cvc-complex-type.2.4.c:一致するワイルドカードは厳密ですが、要素「mvc:default-servlet-handler」の宣言が見つかりません。
Alex Worden

他にもビューリゾルバがある場合は、ハンドラの順序に取り組むようにしてください。
フェニックス

20

私があなたの問題を正しく理解していれば、私はあなたの問題の解決策を見つけたと思います:

私は同じ問題がありましたが、CSSスタイル、JavaScript、またはjqueryファイルが見つからずに生の出力が表示されました。

「デフォルト」サーブレットにマッピングを追加しました。以下がweb.xmlファイルに追加されました。

 <servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>*.css</url-pattern>
 </servlet-mapping>

 <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
 </servlet-mapping>

これにより、DispatcherRequestオブジェクトからのjavascriptおよびcssファイルのリクエストが除外されます。

繰り返しますが、これがあなたが望んでいることかどうかはわかりませんが、私にとってはうまくいきました。「デフォルト」はJBoss内のデフォルトサーブレットの名前だと思います。それが他のサーバーにとって何であるかについてあまりよくわかりません。


1
私は実際には、デフォルトのservlet-を使用したくないというカップルに私にはjboss / tomcatに
HAMO

@hamoなぜそれが問題なのですか?(これは本物の質問であり、議論の余地はありません)。春を実行するには、とにかくサーバー(jboss / tomcat / jetty)を実行する必要がありますよね?
Manav

3
また<url-pattern>、同じタグ内にすべてのタグを追加できます<servlet-mapping>
Milanka 2013

16

優れた解決策がある別のスタックオーバーフローポストがあります

Tomcat固有ではないようで、シンプルで、うまく機能します。私はこの投稿の春のmvc 3.1でいくつかの解決策を試しましたが、動的コンテンツを提供するのに問題がありました。

簡単に言うと、次のようなサーブレットマッピングを追加します。

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>

11

tuckeyのurlrewritefilterを使用して回避策を見つけました。より良い答えがあれば遠慮なく教えてください!

web.xml内:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/*</url-pattern>
  </servlet-mapping>

urlrewrite.xml内:

<urlrewrite default-match-type="wildcard">
<rule>
    <from>/</from>
    <to>/app/</to>
</rule>
<rule match-type="regex">
    <from>^([^\.]+)$</from>
    <to>/app/$1</to>
</rule>
<outbound-rule>
    <from>/app/**</from>
    <to>/$1</to>
</outbound-rule>    

これは、「。」が付いたすべてのURIを意味します。その中(例えば、style.cssのような)は書き直されません。


5
<mvc:resources/>@Jorisが実証したように、より良い答えはSpring 3 です。
Paul

11

私はSpring MVC 3.0でこの問題に取り組んでいるところですが、最初にUrlRewriteFilterオプションを使用しました。ただし、このソリューションは「正しくないと感じた」ので、満足していませんでした(私だけではありません。「hack」という単語が数回表示される上記のSpring Forumsへのリンクを参照してください)。

したがって、上記の「不明(Google)」と同様の解決策を思い付きましたが、すべての静的コンテンツを/ static /(Pet StoreアプリのSpring Rooバージョンから取得)から提供するというアイデアを借りました。「デフォルト」のサーブレットは機能しませんでしたが、Spring Webflow ResourceServletは機能しました(これもSpring Rooで生成されたアプリから取得)。

Web.xml:

<servlet>
    <servlet-name>mainDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet>
    <servlet-name>Resource Servlet</servlet-name>
    <servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mainDispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>Resource Servlet</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

私がJSPに加えた唯一の変更は、CSS、JS、および画像のURLに/ static /パスを追加することでした。例:「$ {pageContext.request.contextPath} /static/css/screen.css」。

Mavenユーザーの場合、「org.springframework.js.resource.ResourceServlet」の依存関係は次のとおりです。

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>2.0.8.RELEASE</version>
</dependency>

悪い解決策ではありません。コアSpring MVCにリソースサーブレットがない(Webフローに別の依存関係を追加する必要があるのではなく)か、他の解決策がないのかについて、私はまだ「理解」していません。Urlrewriteは私にとってはうまく機能するので、とりあえずそれを使い続けます!乾杯、ハモ
ハモ

2
Spring Pet Clinicアプリの標準(非Roo)バージョンを振り返ってみると、「default」のサーブレット定義がコメントアウトされていることに気付きました。箱から出して暗黙の定義」。デフォルトの明示的なパッケージ宣言はorg.apache.catalina.servlets.DefaultServletです。したがって、これは「すぐに使える」リソースサーブレット(?)になる可能性があります。開発作業にJettyを使用していますが、Jettyは暗黙のデフォルトサーブレット(Glassfishな​​ど)を提供していないようです。
nickdos 2010年

8

この問題に関する私自身の経験は次のとおりです。ほとんどのSpring関連のWebページと本は、最も適切な構文は次のとおりであることを示唆しているようです。

    <mvc:resources mapping="/resources/**" location="/resources/" />

上記の構文は、静的リソース(CSS、JavaScript、画像)をアプリケーションのルートにある「resources」という名前のフォルダー(/ webapp / resources /など)に配置できることを示しています。

ただし、私の経験では(EclipseとTomcatプラグインを使用しています)、機能する唯一の方法は、リソースフォルダー WEB_INF(またはMETA-INF)内に配置することです。したがって、私が推奨する構文は次のとおりです。

    <mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" />

JSP(または類似の)で、次のようにリソースを参照します。

<script type="text/javascript"
        src="resources/my-javascript.js">
</script>

言うまでもなく、Springディスパッチャーサーブレット(フロントコントローラー)がすべて、つまり動的なものすべてをインターセプトしてほしかったため、問題全体が生じました。だから私は私のweb.xmlに以下を持っています。

<servlet>
    <servlet-name>front-controller</servlet-name>
    <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
    <!-- spring automatically discovers /WEB-INF/<servlet-name>-servlet.xml -->
</servlet>

<servlet-mapping>
    <servlet-name>front-controller</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

最後に、現在のベストプラクティスを使用しているため、フロントコントローラーのサーブレットxmlに次のようになっています(上記を参照)。

<mvc:annotation-driven/>

また、実際のコントローラーの実装には、すべての着信要求を処理するデフォルトのメソッドがあることを確認するために、次のようにしています。

@RequestMapping("/")

これがお役に立てば幸いです。


それは私のために働いた唯一の解決策でした。私が気付いた興味深いことの1つは、webappを開始した後に追加された新しいリソースが、再起動するまで見つからなかったことです。ユーザーの観点からは意味がありませんが、ほとんどの場合、大きな問題にはなりません。
Rafael

あなたはTomcatの視点で言った、素晴らしい:)
omkar sirra '22

私はこのページでそれぞれの答えを試しました。ありがたいことに、これに到達したとき、もう試す必要はありません。
TimeTrax 2018

6

私は同じ問題を抱えており、ジョリスの答えは非常に役に立ちました。しかし、さらに追加する必要があります

<mvc:annotation-driven /> 

サーブレット構成ファイルに。そのリソースがないと、マッピングは機能せず、すべてのハンドラーが機能しなくなります。これが誰かを助けることを願っています。


2

URLRewriteを呼び出したい場合、URLRewriteは一種の「ハック」です。つまり、ホイールを再発明しているということです。すでに既存のソリューションがあるので。もう1つ覚えておかなければならないのは、Httpサーバー=静的コンテンツ&アプリサーバー=動的コンテンツです(これは、コンテンツが設計された方法です)。各サーバーに適切な責任を委任することにより、効率を最大化できます...しかし、今日では、これはおそらくパフォーマンスが重要な環境での問題にすぎず、ほとんどの場合、Tomcatのようなものが両方の役割でうまく機能するでしょう。しかし、それでもなお心に留めておくべきことです。


2

私はそれをこのように解決しました:

<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

これはTomcatともちろんJbossで動作します。しかし、最終的には、Springが提供するソリューション(rozkyが言及)を使用することにしました。


2

Spring MVC 3.0.xでurlrewriteとアノテーションベースの両方の方法を使用しましたが、アノテーションベースのアプローチが最も適していることがわかりました

<annotation-driven />

<resources mapping="/resources/**" location="/resources/" />

urlrewriteの場合、多くのルールを定義する必要があります。また、すでに依存関係が提供されているため、しばらくの間、UrlRewriteFilterのclass not found例外も取得します。私はそれが推移的な依存関係の存在が原因で発生していることを発見したので、再び1つのステップが増加し、その依存関係をpom.xmlから除外する必要があります

<exclusion></exclusion> tags.

したがって、注釈ベースのアプローチはかなりの取引になります。


2

Spring 3以降、すべてのリソースを異なる方法でマッピングする必要があります。リソースの場所を指定するには、タグを使用する必要があります。

例:

<mvc:resources mapping="/resources/**" location="/resources/" />

この方法で、ディスパッチャサーブレットにディレクトリリソースを調べて静的コンテンツを探すように指示します。


1

この問題を解決する私の方法は、すべてのアクションを「web」や「service」などの特定の接頭辞で配置し、その接頭辞を持つすべてのURLがDispatcherServletによってインターセプトされるように構成することです。


1

私は問題を解決するためにtuckeyのurlrewritefilter(urlrewrite.xml)に春のデフォルトルール(/ **)の前に3つのルールを追加するだけです

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
    <urlrewrite default-match-type="wildcard">
     <rule>
      <from>/</from>
      <to>/app/welcome</to>
     </rule>
     <rule>
      <from>/scripts/**</from>
      <to>/scripts/$1</to>
     </rule>
     <rule>
      <from>/styles/**</from>
      <to>/styles/$1</to>
     </rule>
     <rule>
      <from>/images/**</from>
      <to>/images/$1</to>
     </rule>
     <rule>
      <from>/**</from>
      <to>/app/$1</to>
     </rule>
     <outbound-rule>
      <from>/app/**</from>
      <to>/$1</to>
     </outbound-rule> 
    </urlrewrite>

1

静的コンテンツを使用するいくつかの構成があることは知っていますが、私の解決策は、Tomcat内にバルクWebアプリケーションフォルダーを作成することです。この「バルクWebアプリ」は、アプリを提供せずにすべての静的コンテンツのみを提供します。これは、実際のSpring Webアプリに静的コンテンツを提供するための痛みのない簡単なソリューションです。

たとえば、Tomcatで2つのwebappフォルダーを使用しています。

  1. springapp:img、js、cssなどの静的コンテンツなしで、Spring Webアプリケーションのみを実行しています。(Springアプリ専用)
  2. リソース:それは、JSP、サーブレット、またはあらゆる種類のJava Webアプリケーションなしで静的コンテンツのみを提供します。(静的コンテンツ専用)

JavaScriptを使用したい場合は、JavaScriptファイルのURIを追加するだけです。

EX> /resources/path/to/js/myjavascript.js

静止画像についても、同じ方法を使用しています。

EX> /resources/path/to/img/myimg.jpg

最後に、tomcatに「security-constraint」を配置して、実際のディレクトリへのアクセスをブロックします。「nobody」ユーザーロールを制約に設定して、静的コンテンツパスにアクセスしようとしたときにページが「403 forbidden error」を生成するようにしました。

これまでのところ、それは私にとって非常にうまく機能します。また、Amazon、Twitter、Facebookなどの人気のある多くのWebサイトが、静的コンテンツの提供に異なるURIを使用していることにも気付きました。これを見つけるには、静的コンテンツを右クリックして、そのURIを確認します。


1

これは私の場合本当の仕事をしました

web.xml:

...
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/images/*</url-pattern>
    <url-pattern>/css/*</url-pattern>
    <url-pattern>/javascripts/*</url-pattern>
</servlet-mapping>


<servlet-mapping>
    <servlet-name>spring-mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

...


1

JavaベースのSpring構成の場合、以下を使用できます

静的リソースを提供するためのリソースハンドラーの登録を格納するResourceHandlerRegistryを使用します。

詳細@WebMvcConfigurerAdapterは、@ EnableWebMvcを介して有効にされたSpring MVCのJavaベースの構成をカスタマイズするためのコールバックメソッドを定義します。

@EnableWebMvc
@Configurable
@ComponentScan("package.to.scan")
public class WebConfigurer extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static_resource_path/*.jpg").addResourceLocations("server_destination_path");

    }

0

ここで説明したものと同じ意思決定プロセスに出会い、経験を積んだ後、私はResourceServletの提案を採用することに決めました。

MavenビルドプロセスでWebflowを使用する方法の詳細については、http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch01s05.htmlを参照してください。

標準のMavenセントラルリポジトリを使用する場合、アーティファクトは(上記のspringsourceバンドルとは逆に)です。

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>2.0.9.RELEASE</version>
</dependency> 

0

これは、少なくとも3つの方法で実現できます。

ソリューション

  • HTMLをリソースファイルとして公開する
  • JspServletに* .htmlリクエストも処理するように指示する
  • 独自のサーブレットを作成します(または* .htmlへの別の既存のサーブレットリクエストに渡します)。

これを達成する方法の完全なコード例については、別の投稿の私の回答を参照してください:Spring MVCでリクエストをHTMLファイルにマップする方法?


0

問題はURLPatternにあります

サーブレットマッピングのURLパターンを「/」から「/ *」に変更します


0
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:default-servlet-handler/>
</beans>

アノテーションベースの設定を使用したい場合は、以下のコードを使用してください

@Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.