4

以下のように af:ajax を使用した h:commandLink があります。

<h:commandLink id="submitAjaxSearch" value="Submit Search" >
<f:ajax execute="searchForm" listener="#{dcjsEarthSearchBean.doAjaxSearch}" 
 render="searchForm" onevent="handleOutcome" onerror="handleError"/>
</h:commandLink>

バッキング Bean メソッド doAjaxSearch がトリガーされ、エラーはスローされず、フォームの値が更新されていることがわかります。

public void doAjaxSearch(AjaxBehaviorEvent event){
doSearch();
}

検索を行うと、いくつかのダミー値が作成され、それらがパイプで区切られた文字列に入れられます。値は Google マップの目印に変換されます。これは、ページが検索ページから正常に読み込まれるときに機能します。しかし、マップ ページには、ユーザーが検索を絞り込むために使用できるフォームがあり、上記のコードのコマンド リンクをクリックして ajax 検索を実行できます。JavaScriptは次のようになります

function handleOutcome(data){
var status = data.status; // Can be "begin", "complete" or "success".

switch (status) {
    case "begin": // Before the ajax request is sent.
        alert("begin");
        break;

    case "complete": // After the ajax response is arrived.
        alert("complete");
        break;

    case "success": // After update of HTML DOM based on ajax response..
        alert("success");
        break;
}


}

function handleError(data){
alert(data.status);
}

commandLink をクリックすると、「begin」というアラートが表示され、Eclipse のコンソールでバッキング Bean コードが実行されていることがわかります。次に、「complete」というアラートが表示され、「clientError」というアラートが表示されます。イベントがトリガーされます。問題は、特定のクライアント エラーが何であるか、またはそれを取得する方法がわからないことです。問題は、フォームがトマホークのタブ付きペイン内にあり、部分的な更新により、トマホークが独自に作成した囲みフォーム名が失われていることだと思いますか? すべて一緒ではありません。しかし、Firebug では、handleError 部分のデータ オブジェクトに監視を設定し、これを含むものを取得します。

responseXML
Document
serverErrorMessage
"C._mfInternal is undefined"
serverErrorName 
"TypeError"
source
a#j_id_b:searchForm:submitAjaxSearch #  
status  
"clientError"   
type    
"error" 
data
Object { type=
"error"
, status=
"clientError"
, serverErrorName=
"TypeError"
, more...}

「C._mfInternal is undefined」が問題の核心だと思います。しかし、それが何なのかわからず、ページのソースを表示してもその名前が見つかりません。このような問題を見た人はいますか?

4

0 に答える 0