Javascript не работает под шаблоном JSF

Я использую шаблоны JSF и Primefaces.

Кажется, что код Javascript не работает под тегами ui :ограммы и ui: определения. В следующем коде не используется метод загружен (). Это файл content.xhtml

<h:head>
<script language="javascript">
    function loaded() {
        alert("Working!!");
    }
</script>
</h:head>

<ui:composition template="/template/template.xhtml">
<ui:define name="content">
<h:body style="width:100%;height:100%;" onload="loaded()">
     <p class="item">Random text</p>
</h:body>
</ui:define>
</ui:composition>

но когда я удаляю теги define и Composition, вызывается загруженная функция. Есть идеи, почему это происходит?

Вот файл шаблона

<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">


<h:head>
<title><ui:insert name="title">Template</ui:insert></title>
</h:head>

<h:body>

<div id="header">
    <ui:insert name="header">
        <ui:include src="../menu.xhtml" />
    </ui:insert>
</div>


<div id="content">
    <ui:insert name="content">
        <ui:include src="../content.xhtml" />
    </ui:insert>
</div>

<div id="footer">
    <ui:insert name="footer">
        This is a footer
    </ui:insert>
</div>

 Jigar Joshi14 июн. 2012 г., 07:45
Смотрите разницу в сгенерированном HTML в обоих случаях
 hajime14 июн. 2012 г., 08:37
Хорошая идея :) ... Только что проверил, и похоже, что метод загружен () не добавляется в выходной HTML.

Ответы на вопрос(2)

ент», он не будет включен в итоговый HTML.

Разместите файл template.xhtml, и мы увидим ...

 hajime14 июн. 2012 г., 08:23
Стив. Я отредактировал вопрос и добавил файл template.xhtml.
Решение Вопроса

outside <ui:composition> являетсяignored во время построения вид. Кроме того, повторное выделение<h:body> еще раз не нужно. Чтобы использовать скрипт, который запускается во время загрузки страницы, лучше использовать<h:outputScript target="body">, Это будет перемещено в конец тела и, таким образом, будет вызваноafter необходимые элементы HTML DOM были построены. Это также несколько быстрее, чемonload.

со всеми вашимиentire content.xhtml должен выглядеть так:

<ui:composition template="/template/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <ui:define name="content">
        <h:outputScript target="body">
            alert("Working!!");
        </h:outputScript>

        <p class="item">Random text</p>
    </ui:define>
</ui:composition>
See also: How to include another XHTML in XHTML using JSF 2.0 Facelets?
 hajime14 июн. 2012 г., 15:14
Потрясающие!! Это сработало. Спасибо, куча BalusC ... Ты супер герой здесь, на Stackoverflow. Еще раз спасибо :)

Ваш ответ на вопрос