9

テンプレートエンジンとしてfreemarkerで春を使用しています。Freemarker では、たとえば追加することで、セキュリティのために Jsp Taglibs を使用できます。

    <#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />

テンプレートに、たとえば使用できるもの

    <@security.authorize ifNotGranted="ROLE_ADMIN">
        whatever
    </@security.authorize>

しかし、Spring/Freemarker は、クラスパスに追加されない限り、taglibs を見つけることができないので、追加しました

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring.version}</version>
    </dependency>

私のプロジェクトの私のpom.xmlに。

とにかく、タグが見つかりませんでした!タグを見つけるには、spring-security-taglibs.jar を WEB-INF/lib フォルダーに追加する必要がありました。

jarをlibフォルダーに明示的に追加する必要がある理由を誰かが知っていますか?? 私の場合、Tomcat がそれらを見つけられないのはなぜですか?

編集@ddekany

ありがとうございました。spring-security-taglibs.jar が WEB-INF/lib ディレクトリにコピーされていない場合、スタックトレースは次のようになります。

    No mapping defined for http://www.springframework.org/security/tags 
    The problematic instruction: ---------- ==> assignment: 
            security=JspTaglibs["http://www.springframework.org/security/tags"] 
            [on line 12, column 1 in home.ftl] in user-directive content.main 
            [on line 8, column 9 in home.ftl] in user-directive layout.global 
            [on line 2, column 1 in home.ftl] 
    ---------- Java backtrace for programmers: ----------      
    freemarker.template.TemplateModelException: 
            No mapping defined for http://www.springframework.org/security/tags at         
    freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:180) at 
    ...
4

3 に答える 3

7

他の誰かがこれに遭遇した場合...

ここで概説されているように、春のサポートファイルを追加する必要があります(カットアンドペーストのみ)http://static.springsource.org/spring-webflow/docs/2.2.x/reference /html/ch13s09.html .

次に、いくつかの依存関係を追加します。

<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-taglibs</artifactId>
  <version>2.0.0</version>
</dependency>
<dependency>
  <groupId>org.springframework.webflow</groupId>
  <artifactId>spring-faces</artifactId>
  <version>2.3.1.RELEASE</version>
</dependency>

他のすべてが機能していると仮定すると、taglib をページに追加できるはずです。例えば:

xmlns:sec="http://www.springframework.org/security/tags"

< sec:authorize ifAllGranted="USER_ROLE">
Hello user
< /sec:authorize>

* b/f 'sec' にスペースを追加する必要がありました投稿する

于 2012-11-13T01:39:00.000 に答える
2

この Maven 依存関係を使用します。

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>

org.springframeworkorg.springframework.securityは異なるバージョン番号を持つ異なるフレームワークです。

于 2014-10-10T18:32:11.853 に答える
0

ここここJspSupportServletに記載されている内容を含めましたか

[編集] あなたの投稿をもう少し注意深く読んだ後、JSP 仕様のセクション「JSP.7.3.2」(以降) を読むことをお勧めします。

于 2012-08-23T08:16:46.590 に答える