質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

3回答

3248閲覧

SpringBoot(JSP)でJasperExceptionエラー

tsizuku

総合スコア7

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/01/24 10:07

編集2021/01/26 06:38

SpringBootで起動時のコンソールにJasperExceptionのエラーが表示されます。
古いシステムからJSPを移設してSpringBootに移植してみました。
JSPファイルを移設時実行でエラー。
どんなことが予想されますでしょうか?
ヒントだけでも下さい。

下記はエラー情報

org.apache.jasper.JasperException: /WEB-INF/views/login.jsp (line: [21], column: [32]) The attribute prefix [f] does not correspond to any imported tag library

下記はJSPのコード。2行目の<img…でエラーとなっています。

<td class="TABLE_FRMTITLE" colspan="3" style="height: 18px" align="left"> <img src="${f:url('/images/point.gif')}" alt="point" /> <span id="Formtitle" style="font-size:13px;">利用者ログイン</span> </td>

追記します。
WEB-INFの下にxxxxx.tldというファイルがありました。
中身は以下です。ですが、「f」のような設定はありませんでした。

<?xml version="1.0" encoding="ISO-8859-1" ?> <taglib 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-jsptaglibrary_2_0.xsd" version="2.0"> <display-name>A tag library for SHORYU</display-name> <tlib-version>2.0</tlib-version> <short-name>shoryuTag</short-name> <uri>/taglib/shoryu</uri> <tag> <name>pagingPrefixTag</name> <tag-class>jp.psf.shoryu.util.SRPagingPrefixTag</tag-class> <body-content>empty</body-content> </tag> <tag> <name>pagingSuffixTag</name> <tag-class>jp.psf.shoryu.util.SRPagingSuffixTag</tag-class> <body-content>empty</body-content> <attribute> <name>targetMethod</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>subSearchKeyTag</name> <tag-class>jp.psf.shoryu.util.SubSearchKeyTag</tag-class> <body-content>empty</body-content> </tag> <tag> <name>subSearchFormTag</name> <tag-class>jp.psf.shoryu.util.SubSearchFormTag</tag-class> <body-content>empty</body-content> </tag> <tag> <name>useBean</name> <tag-class>jp.psf.shoryu.util.SRUseBeanTag</tag-class> <body-content>empty</body-content> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>type</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>field</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>errors</name> <tag-class>jp.psf.shoryu.util.SRErrorsTag</tag-class> <body-content>empty</body-content> <attribute> <name>bundle</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>footer</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>header</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>name</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>prefix</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>property</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>suffix</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>

次に共通のjspが存在してそれが読み込まれているのでは無いかと推測します。
遅くなりましたがこの古いシステムはSeaser2作られています。
そのJsp中身↓↓

<%@page pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%> <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> <%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%> <%@taglib prefix="s" uri="http://sastruts.seasar.org" %> <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions" %> <%@taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%> <%@taglib prefix="shoryuTag" uri="/taglib/shoryu"%>

いまだ、「f」でエラーになっています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

${f:url(...)} と書かれているところは、JSPのEL式という物だと思います。「f」というプレフィックスでurlという関数を使います、という宣言を定義したtldファイルをインポートする必要があります。(もちろんそのtldに記載されている「urlメソッドが定義された実際のJavaクラス」も)

JSPの上部に、

<%@taglib prefix="f" uri="/WEB-INF/hogehoge.tld" %>

のようなモノが記載されてないでしょうか。あれば旧システムからそのファイルを探してください。で、tldファイル(xml)に、

<function> <name>url</name> <function-class>jp.hogehoge.HogeClass</function-class> <function-signature>java.lang.String url(java.lang.String)</function-signature> </function>

のような定義がないでしょうか。あればそのクラス内の処理を見てください。

※ただ、SpringBootでThymeleafなどの別のテンプレートエンジンを使用しているなら、そのまま持ち込むのではなく、作り直した方が良いと思います。

投稿2021/01/24 13:31

umau

総合スコア831

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsizuku

2021/01/26 06:39

tldファイルは見つけました。 本文に情報を追記しましたので確認お願いします。
guest

0

ベストアンサー

JSPの冒頭部にかかれているtaglibの設定に prefix="f" があるかを確認してください。

「古いシステム」はSpringMVCで作成されているならば、
SpringMVCの <%@ taglib prefix="f" uri="http://www.springframework.org/tags"%> で定義します。

※理由:urlタグは、http://www.springframework.org/tags のuriで定義されるため

投稿2021/01/25 02:16

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsizuku

2021/01/26 06:43

ご指摘の定義見つけました。 共通のJSPに記載してありました。本文に追記しました。 まだ解決はしていません。
A-pZ

2021/01/26 11:45

追記ありがとうございます。 <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions" %> は、SpringMVCのではなくSAStrutsのタグですのでSpringMVC用のタグに変更すべきです。そのままSAStrutsのtaglibを利用するには、Struts1のタグを利用するため、いくつか競合が発生する可能性が高いです。
guest

0

Strutsのtaglibを使うのは、今後問題が起きそうなのでtaglib自体を使うことをやめてspringのtaglibに置き換えようと考えています。
有難うございました。

投稿2021/01/29 22:33

tsizuku

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問