1

myfaces と primefaces を使用して Web ソリューションに取り組んでいます。ソリューションにはいくつかのページがmyfaces not definedあり、ページに含まれていない javascript ファイル、つまり次のjsf.jsファイルがあるため、この神秘的なエラーが発生するものもあります。

<script type="text/javascript" src="/driwkraft-hig/javax.faces.resource/jsf.js.xhtml?ln=javax.faces&stage=Development">

ページ上の特定のコマンドリンクをクリックするとエラーが発生し、生成された JavaScript がonClick="myfaces.oam.submitForm...

これは、私が理解できない神秘的な基準に基づいて JSF フレームワークがページに追加するものであることを理解しています。どの要素が使用されているかに関して同等に見えるページがあり、一方は成功し、他方は失敗します。

失敗したページの 1 つのコンテンツをコピーし、問題の原因を特定できるようになるまでパーツを削除したテスト ファイルを作成しようとしましたが、何も得られませんでした。私の次の予感は、どこかで構成エラーが発生している可能性があるということです。しかし、私はどこから始めるべきかについて完全に完全に空白です。

この質問にコードまたはxmlを追加する必要がある可能性があることは理解していますが、ソリューション全体を投稿することはできないため、リクエストに応じて投稿するのが最善だと思います. web.xml は役に立ちますか? faces-config.xml はどうですか?

ご指導やご意見をお待ちしております。


編集 - テンプレートの追加

<?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>

編集 - テンプレート クライアントの追加

<!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>
4

1 に答える 1

3

テンプレートに、JSF コンポーネントのアノテーションを介して追加される<h:head>CSS/JS 依存関係を自動的にレンダリングする がある場合は、自動的に含まれます。UIViewRoot#getComponentResources()@ResourceDependency

これらの問題の症状は<h:head>、テンプレートにはありませんが、プレーンな<head>. したがって、JSF は CSS/JS リソースの依存関係を自動的に含めることができず、この JS エラーが発生します。

この問題を解決するには、<h:head>代わりに<head>テンプレートにあることを確認してください。

<!DOCTYPE html>
<html lang="en"
    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">
    <h:head> <!-- Look here. -->
        <title>Blah</title>
    </h:head>
    <h:body>
        <h1>Blah</h1>
        <p>Blah blah.</p>
    </h:body>
</html>
于 2013-03-13T11:15:11.950 に答える