Я работаю над веб-решением с использованием поверхностей и поверхностей. У нас есть несколько страниц в нашем решении, и некоторые из этой мистической ошибки myfaces not defined
, потому что есть яваскрипт файл, который не включен на странице, а именно jsf.js
файла:JSF Javascript failure - myfaces not defined
<script type="text/javascript" src="/driwkraft-hig/javax.faces.resource/jsf.js.xhtml?ln=javax.faces&stage=Development">
Ошибка возникает при нажатии на определенном commandlinks на странице, где сгенерированный javascript был установлен в onClick="myfaces.oam.submitForm...
Теперь я понимаю, что это что-то, что фреймворк JSF добавляет к странице на основе некоторых мистических критериев, которые я не понимаю. Существуют страницы, которые кажутся равными в отношении того, какие элементы используются, и он преуспевает в одном, а с другой - терпит неудачу.
Я попытался создать тестовый файл, где я скопировал содержимое одной из страниц с ошибкой, а затем удалил части, пока это не сработает, чтобы выяснить, что является источником проблемы, но это ничего мне не дало. Моя следующая догадка в том, что это может быть какая-то ошибка конфигурации. Но я совершенно и совершенно пуст о том, с чего начать.
Я понимаю, что мне следовало бы добавить к этому вопросу какой-то код или xml, но я не могу опубликовать все решение, поэтому считаю, что лучше сделать это по запросу. Будет ли полезен web.xml? Как насчет faces-config.xml?
Любые рекомендации и мысли очень ценятся!
Edit - добавление шаблона
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:insert name="metadata" />
<h:head>
....
<title>
<ui:insert name="title">
....
</ui:insert>
</title>
</h:head>
<h:body>
....
<ui:insert name="content">
....
</ui:insert>
...
</h:body>
</html>
Edit - добавление клиента шаблона
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:dp="http://java.sun.com/jsf/composite/dapsys">
<ui:composition template="/templates/default.xhtml">
<ui:define name="title">TITLE</ui:define>
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="customerId" value="#{CustomerController.customerId}">
</f:viewParam>
<f:viewParam name="edit" value="#{CustomerController.edit}">
</f:viewParam>
<f:viewParam name="activeTab" value="#{CustomerController.activeTab}">
</f:viewParam>
</f:metadata>
</ui:define>
<ui:define name="content">
...
</ui:define>
</ui:composition>
</html>
возможно дубликат [Что может вызвать «JSF не определен» ошибка в консоли браузера] (http://stackoverflow.com/questions/9971925/what-can-cause-jsf-is-not-defined -error-in-browser-console) – partlov
ok, нашел обходной путь в указанном вопросе, добавив библиотеку вручную в шаблон следующим образом: ' '. Тем не менее, маркировка balusCs aswer ниже принята, поскольку это было его руководство в этом вопросе, а также;) –