2012-04-02 3 views
9

Привет У меня простой свежий проект, основанный на MyFaces 2.0.11 с Primefaces 3.0 на сервере Tomcat 6Что может вызвать «JSF не определен» ошибка в консоли браузера

Когда я пытаюсь перейти на страницу I 'm получает ошибку Uncaught ReferenceError: jsf is not defined, которая направляет мне ссылку на мой код js jsf.ajax.addOnEvent ... (что разумно, потому что я пытаюсь использовать jsf.js, и это не событие. Я - моя страница ..)

И если я действительно просматриваю источник своей страницы, я не включаю файл jsf.js

Теперь, если я добавлю его вручную, как это

<h:outputScript name="jsf.js" library="javax.faces" target="head"/>

каждая вещь работает отлично ... но я предпочитаю не включать его вручную, вместо этого я хотел бы знать, каковы причины, которые могут вызвать отсутствие в jsf.js на моей странице

я Google на некоторое время, и никто из подобного случая не представляет рудник

у меня есть <h:head> и <h:body> Моя страница очень просто ...

есть идеи?

+0

Если у вас есть h: head на вашей странице, скрипт * должен * быть там. Проверьте, не пропущен ли он каким-либо образом, например, нарисуя в нем заголовок. –

+0

Добавлен заголовок ... заголовок отображается правильно, но jsf.js по-прежнему не добавляется ... – Daniel

ответ

7

Этот скрипт будет включаться только автоматически, когда вы используете <f:ajax> в представлении. Если вы этого не сделаете, тогда он не будет включен автоматически.

Просто добавьте дополнительную проверку перед вызовом jsf.ajax.addOnEvent:

if (typeof jsf !== 'undefined') { 
    jsf.ajax.addOnEvent(someFunctionName); 
} 

Или, явно включить библиотеку по <h:outputScript> на соответствующую library, как вы уже сделали.

+0

Работает как шарм! и смысл :) Спасибо! – Daniel

+0

@BalusC Я использовал этот метод, чтобы попытаться обойти ту же ошибку, но безрезультатно. Я все еще получаю то же сообщение, и я подтвердил, что скрипт правильно сформирован на клиенте с этой проверкой. – Stephan

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