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();
}

搜索只是创建一些虚拟值并将它们放入管道分隔的字符串中。这些值被转换为谷歌地图地标。当页面从搜索页面加载正常时,这有效。但是在地图页面上,我有一个表单,用户可以使用它来优化搜索并通过单击上面代码中的命令链接进行 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 时,我收到一条提示“开始”的警报,然后我看到支持 bean 代码在 Eclipse 控制台中执行,然后我收到一条提示“完成”的警报,然后当不知何故出现 onerror 时,我收到一条提示“clientError”的提示事件被触发。麻烦的是我不确定具体的客户端错误是什么或如何解决它。我怀疑问题是我的表单位于 Tomahawk 选项卡式窗格中,并且以某种方式部分更新丢失了 Tomahawk 自己创建的封闭表单名称?不一定都在一起。但是在 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 未定义”是问题的症结所在。但是我不知道那是什么,当我查看页面源时我找不到任何命名的东西。有人见过这样的问题吗?

4

0 回答 0