Spring 3 - Включение JavaScript через распознаватель представлений JSP? - PullRequest
4 голосов
/ 06 апреля 2011

Я пытаюсь локализовать свое приложение, и было бы неплохо, если бы я мог просто отправить все файлы JS через распознаватель JSP, чтобы получить доступ к пакетам локализации.

Прямо сейчас у меня просто есть:

<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>

, и мне было интересно, есть ли простой способ разрешить и .js, и .jsp разрешать через InternalResourceViewResolver без добавления какой-либо хакерской сопоставления с образцом.

Ответы [ 2 ]

8 голосов
/ 14 апреля 2011

Вам не нужно, чтобы ваши .js файлы были сохранены как .js, если их тип содержимого text/javascript. Но наличие динамической информации в ваших .js файлах неверно:

  • вы не можете их правильно кэшировать
  • у вас может возникнуть желание добавить логику jsp в файл .js, что будет сложно поддерживать
  • вы не можете использовать сети для доставки контентов (при необходимости)
  • (и, возможно, в этом есть и другие недостатки, о которых я сейчас не могу думать)

Вместо этого вам следует инициализировать некоторый объект настроек со страницы jsp, использующей файл .js. См. этот ответ для получения более подробной информации.

Вот конкретный (упрощенный) пример из моего кода. Этот фрагмент находится в .jsp:

<script type="text/javascript">
var config = {
    root : "${root}",
    language: "${user.language.code}",
    currentUsername: "${user.username}",
    messages : {
        reply : "${msg.reply}",
        delete : "${msg.delete}",
        loading : "${msg.loading}",
    }
};
init(config);
</script>

init(config) находится в файле .js и просто устанавливает объект конфигурации в качестве глобальной переменной. (У меня есть некоторые значения по умолчанию, но это не имеет значения)

0 голосов
/ 21 января 2015

Поместите все ваши javascripts под webapp/scripts.Затем программно добавьте эту реализацию метода addResourceHandlers() в ваш файл WebConfig.xml:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "package.base.your")
public class WebConfig extends WebMvcConfigurerAdapter {

//your other WebMvcConfigurerAdapter class implementations here

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  //other handlers here
  registry.addResourceHandler("/scripts/**").addResourceLocations("/scripts/**");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...