2010-11-09 3 views
9

Я пытаюсь удалить jquery и prototype и Scriptaculous из моего проекта RichFaces. Я не хочу, чтобы эти библиотеки были там, потому что я хочу использовать последнюю версию jQuery в этом проекте, и наличие трех старых версий этих библиотек затрудняет работу.Какие компоненты RichFaces используют прототип, который использует jquery?

Я не могу найти какие-либо документы в Интернете, которые говорят, какие части RichFaces требуют этих библиотек. На самом деле мне кажется crazy, что они решили включить в него как прототип, так и jquery.

ответ

6

Если вы используете RichFaces 3.1.x вы можете добавить это в вашем файле web.xml

<context-param> 
    <param-name>org.richfaces.ExcludeScripts</param-name> 
    <param-value>Prototype,Scriptaculous,JQuery</param-value> 
</context-param> 

Однако, это не будет работать в более поздних версиях. Дополнительная информация here.

Если вы хотите использовать последний jQuery в своем собственном коде, посмотрите на this blog post Я написал объяснение, как вы можете использовать свою версию jQuery без конфликтов.

Основная идея заключается в том, что вы должны использовать jQuery.noConflict(); Вы можете назначить это на свой собственный, т.е. селектор: $j = jQuery.noConflict();

Затем вы можете использовать свою собственную версию JQuery, не влияя на версию поставляемую с RichFaces.

function showMessages() { 
    $j("div#messagetextPanel").fadeIn("fast"); 
} 

RichFaces 4.й в комплекте с JQuery 1.4

3

Это своего рода сумасшедший. Я не уверен, что это изменилось в Richfaces 4, но для 3.x справедливо следующее.

  • Прототип используется для ядра Ajax , поэтому вы не можете избавиться от этого.
  • Scripatculous используется для rich:effect.
  • jQuery используется для таких компонентов, как выбор даты.

Вы, однако, сможете обновить их версии и использовать их самостоятельно, если вы используете LoadScriptStrategy of NONE в своем web.xml и загружаете свои скрипты вручную на свои страницы.

<context-param> 
    <param-name>org.richfaces.LoadScriptStrategy</param-name> 
    <param-value>NONE</param-value> 
</context-param> 
+2

JQuery 1.4 не является автоматически обратной совместимостью с 1.3. Поэтому я бы не сделал этого, если бы я, где вы –

2

RichFaces 3ого определяет зависимости сценарий для каждого компонента в RichFaces-ui.jar/META-INF/rich.component-зависимости. К сожалению, большинство компонентов интерфейса Richfaces имеют зависимости как от jQuery, так и от Prototype.

Основная функциональность ajax (которая поступает из ajax4jsf) довольно чиста и не зависит от jQuery или Prototype. Таким образом, чтобы получить АЯКС поддержку работы вам просто необходимо следующее:

  • /a4j/g/3_3_1.GAorg.ajax4jsf.javascript.AjaxScript
  • /a4j/g/3_3_1.GAorg/ajax4jsf/javascript/scripts/ форма.js

Вы можете вытащить их вместе в пользовательском файле, чтобы не загружать их отдельно по Richfaces. Вам нужно будет установить context-param org.richfaces.LoadScriptStrategy в web.xml в NONE, если вы хотите использовать собственный скрипт.

Если вы хотите использовать элементы управления пользовательского интерфейса, то вам, вероятно, придется иметь как jQuery, так и прототип. Однако вы можете, например, обновить базовый jQuery до 1.4.3. Чтобы сделать это, вам нужно посмотреть на настройки, которые Richfaces делает для jQuery.js и повторно применить к более поздней версии jQuery.

Richfaces 4 должен быть намного более чистым. Я надеюсь, что это так!

Смежные вопросы