05
Июн
2018

В index.jsp не работает <fmt:message>

Столкнулся с проблемой: при интернационализации с помощью Spring в index.jsp не работает тег <fmt:message>. Хотя в остальных jsp всё отображается корректно, хотя ссылаются на один файл пропертей. На index.jsp выводит:

???app.title???

???vote.title???

Перенос index.jsp в папку WEB-INF/jsp проблему не решает.

вот мои файлы:

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
     <title>Java Enterprise (VotingSystem)</title>
</head>
<body>
<h3><fmt:message key="app.title"/> </h3>
<hr>
<ul>
    <li><a href="votes"><fmt:message key="vote.title"/></a></li>
</ul>
</body>
</html>

spring-mvc.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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<mvc:annotation-driven/>

<context:component-scan base-package="ru.alvisid.**.web"/>

<!--  all resources inside folder src/main/webapp/resources are mapped so they can be referred to inside JSP files -->
<mvc:resources mapping="/resources/**" location="/resources/"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/jsp/"
      p:suffix=".jsp"/>

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
      p:cacheSeconds="5"
      p:defaultEncoding="UTF-8">
    <property name="basenames" value="file:///#{systemEnvironment['VOTINGSYSTEM_ROOT']}/config/messages/app"/>
    <property name="fallbackToSystemLocale" value="false"/>
</bean>
</beans>

web.xml:

 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">

<display-name>Votingsystem</display-name>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>spring.profiles.default</param-name>
    <param-value>hsqldb,datajpa</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:spring/spring-app.xml
        classpath:spring/spring-db.xml
    </param-value>
</context-param>

<!-- Spring MVC -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

app.properties:

 app.title=Voting system
 app.home=Home

 vote.title=All votes
 vote.date=date
 vote.restaurant=restaurant
 vote.votesrest=votes for restaurant
 votes.total=total votes

 datefilter.from=from date
 datefilter.to=to date

 filter.filter=filter
 filter.reset=reset filter

app_ru.properties:

 app.title=Система голосования
 app.home=На главную

 vote.title=Все голоса
 vote.date=дата
 vote.restaurant=ресторан
 vote.votesrest=количество голосов
 votes.total=всего голосов

 datefilter.from=от даты
 datefilter.to=до даты

 filter.filter=отфильтровать
 filter.reset=сбросить фильтр

votes.jsp:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 <html>
 <head>
     <title>Votes</title>
 </head>
 <body>
 <h3><a href="../../index.jsp"><fmt:message key="app.home"/></a></h3>
 <h2><fmt:message key="vote.title"/></h2>
 <form method="post" action="votes">
     <dl>
         <dt><fmt:message key="datefilter.from"/></dt>
         <dd><input type="date" name="startDate" value="${param.startDate}">          </dd>
     </dl>
     <dl>
         <dt><fmt:message key="datefilter.to"/></dt>
         <dd><input type="date" name="endDate" value="${param.endDate}"></dd>
     </dl>
     <button type="submit"><fmt:message key="filter.filter"/></button>     <button type="reset"><fmt:message key="filter.reset"/></button>
 </form>
 <table border="1" cellpadding="8" cellspacing="0">
     <thead>
     <tr>
         <th><fmt:message key="vote.date"/></th>
         <th><fmt:message key="vote.restaurant"/></th>
         <th><fmt:message key="vote.votesrest"/></th>
         <th><fmt:message key="votes.total"/></th>
     </tr>
     </thead>
     <c:forEach items="${votes}" var="vote">
         <jsp:useBean id="vote" scope="page"           type="ru.alvisid.votingsystem.to.RestaurantVotes"/>
         <tr>
             <fmt:parseDate value="${vote.date}" pattern="yyyy-MM-dd"      var="parsedDate" type="both"/>
             <td>
                 <fmt:formatDate pattern="dd.MM.yyyy"      value="${parsedDate}"/>
             </td>
             <td>${vote.restaurantName}</td>
             <td>${vote.totalVotesForRestaurantADay}</td>
             <td>${vote.totalVotesForADay}</td>
         </tr>
     </c:forEach>
 </table>
 </body>
 </html>

Подскажите, пожалуйста, как заставить этот тег работать.

Источник: https://ru.stackoverflow.com/questions/837973/%D0%92-index-jsp-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82-fmtmessage

Тебе может это понравится...

Добавить комментарий