5

Primefaces の Picklist を使用しようとしています。ページがレンダリングされるとき、Chrome の JavaScript エンジンは Primefaces オブジェクトを見つけることができません。「Uncaught ReferenceError: PrimeFaces が定義されていません」というエラーが表示されます。.xhtml ファイルにリソース (js) が含まれていませんか? お知らせ下さい。ありがとう。

Xhtml

<?xml version="1.0"?>
<!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" xml:lang="en" lang="en"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<link rel="stylesheet" type="text/css"
    href="../jquery-ui-1.8.23.custom/css/ui-lightness/jquery-ui-1.8.23.custom.css" />
<link rel="stylesheet" type="text/css" href="css/form.css" media="all" />
<script src="../jquery-ui-1.8.23.custom/js/jquery-1.8.0.min.js"></script>
<script
    src="../jquery-ui-1.8.23.custom/js/jquery-ui-1.8.23.custom.min.js"></script>

</head>
<h:body>
<form id="form_486588" class="appnitro" method="post">
            <div class="form_description"></div>
            <p:pickList id="pickList" value="#{editorsMB.editors}" var="editor"
                itemLabel="#{editor}" itemValue="#{editor}" />
            <p:commandButton id="citySubmit" value="Submit"
                style="margin-top:5px" />
        </form>
</h:body>
</html>

マネージドBean

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.model.DualListModel;

@ManagedBean(name = "editorsMB")
@SessionScoped
public class AdminEditorsBean {

    private DualListModel<String> editors;  

    public AdminEditorsBean(){
    List<String> adminsSource = new ArrayList<String>();  
    List<String> adminsTarget = new ArrayList<String>();  

    adminsSource.add("aaa");  
    adminsTarget.add("target1");
    editors = new DualListModel<String>(adminsSource, adminsTarget);  
    }

    public DualListModel<String> getEditors() {  
        return editors;    
}  
    public void setEditors(DualListModel<String> editors) {  
        this.editors = editors;  
    }  

}
4

1 に答える 1

26

PrimeFaces は、必要な JS/CSS リソースを に自動的に組み込みます<h:head>

ただし、そのタグはありません。「プレーンな HTML」があります<head>。それに応じて修正します。

<html>
    <h:head>
        ...
    </h:head>
    <h:body>
        ...
    </h:body>
</html>

この間違いは、次のようにサーバー ログにも記録されているはずです。

1 つ以上のリソースに 'head' のターゲットがありますが、'head' コンポーネントはビュー内で定義されていません

JSF 2.0 Facelets を使用して XHTML に別の XHTML を含める方法も参照してください。<ui:include>、タグファイル、複合コンポーネント、および/またはカスタムコンポーネントをいつ使用するか? JSF/Facelets ページのオーサリングのさまざまな正しい例については、


具体的な問題とは関係ありません: jQuery ベースの JSF コンポーネント ライブラリである PrimeFaces は、jQuery と jQuery UI がバンドルされて既に出荷されています。競合を避けるために、手動で含めたスクリプトをページから削除する必要があります。jQuery を PrimeFaces に追加すると、すべての場所で Uncaught TypeError が発生するも参照してください。

その冗長性を に置き換える機会をすぐに利用して<link>ください<h:outputStylesheet>Facelets テンプレートで CSS / JS / 画像リソースを参照する方法も参照してください。

于 2013-01-28T19:45:37.043 に答える