3

間違ったタイプのファイルを選択したときのエラーメッセージを削除したい。リンクhttp://forum.primefaces.org/viewtopic.php?f=3&t=23853をたどりました。

<p:fileUpload fileUploadListener="#{userProfileUpdateController.upload}"         
    widgetVar="fileuplaodWgt"                     
    allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
    description="Select Images"
    update="userPhoto"
    mode="advanced"/>

と私はインポートします<h:outputScript name="library.js" library="script"></h:outputScript>

library.js内

$(document).ready(function(){
   alert(fileuplaodWgt);
   fileuplaodWgt.buttonBar.find("button.cancel").bind("click", function(e){
   clearInvalidFileMsg();
    });
});

function clearInvalidFileMsg(){
    fileuplaodWgt.uploadContent.find("tr.ui-state-error").remove();
 }

上記の書き込み後、ファイルのアップロードが私のページに表示されません。library.jsファイルをトレースすると、fileuplaodWgt ReferenceErrorが見つかりました:fileuplaodWgtが定義されていません。モジラとクロームで試してみました。それらのどれも私のファイルのアップロードを示していません。私が間違っていることを手伝ってくれませんか?

4

1 に答える 1

1

PrimeFaces は、DOM 対応のウィジェット変数を .xml によって初期化します$(function())。コマンドを含む は、コンポーネントの<script>直後にレンダリングされます。そのため、widget var one の$(document).ready()に呼び出された場合、後で初期化されるため、widget var は見つかりません。コンポーネントがレンダリングされた後に yourが呼び出されるようにする必要があります。方法の 1 つは、スクリプトを HTML の末尾に移動することです。$(document).ready()<body>target="body"

<h:outputScript name="library.js" library="script" target="body" />

このようにして、ドキュメントの最後に到達したときにスクリプトがロードされ、初期化されます。つまりすべてのウィジェット変数の初期化の後です。

別の方法として$(window).load()の代わりにを使用する$(document).ready()こともできますが、ドキュメントで参照されているすべての画像が読み込まれたときにのみ呼び出されるため、扱いにくく、処理速度が遅くなる可能性があります。


具体的な問題とは関係ありませんが、リソースの使用方法がlibrary正しくありません。JSF リソース ライブラリの目的と使用方法をよくお読みください。そしてただ使う

<h:outputScript name="script/library.js" target="body" />

ところで、問題とは関係のないウィジェットの var 名にも不穏なタイプミスがあります。uplaodではなく、uploadです

于 2013-01-09T11:45:16.973 に答える