Управление версиями ресурса JSF

Я пытаюсь поместить версии вокруг ресурсов в приложении.

Если мне нравятся эти ресурсы /js/1_0_0/mainscript.js

Это не работает. Это говорит RESOURCE_NOT_FOUND

но когда я так делаю

ресурсы / JS /mainscript.js/1_0_0.js

Оно работает. Мне не нравится, как это организовано вторым способом. Первый выглядит круто. Любая идея?

Я использую Tomcat 7.0, JSF 2.0.9

Обновление: я проверял primefaces-2-2.1.jar. Поскольку, когда я проверил источник страницы, я увидел это /javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces&v=2.2.1">

Затем я посмотрел на META-INF/resources/primefaces/jquery/jquery.js

У них там не было версий, но как это добавило v = 2.2.1 в голову

1 ответ

Решение

Если мне нравятся эти ресурсы /js/1_0_0/mainscript.js

Это не работает. Это говорит RESOURCE_NOT_FOUND

Это будет работать, если вы укажете js как имя библиотеки.

<h:outputScript library="js" name="mainscript.js" />

Однако это не правильное использование библиотеки ресурсов. Скорее представить один.

resources/default/1_0_0/js/mainscript.js

Тогда вы можете указать это следующим образом:

<h:outputScript library="default" name="js/mainscript.js" />

У них там не было версий, но как это добавило v=2.2.1 в голову

Это сделано PrimeResource который реагирует на запросы ресурсов с ln=primefaces параметр. это getRequestPath() имеет следующую реализацию:

@Override
public String getRequestPath() {
    return super.getRequestPath() + "&amp;v=" + Constants.VERSION;
}

куда Constants это файл констант PrimeFaces, который обновляется с каждой версией PF.

Другие вопросы по тегам