我有一个带有f: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时,我收到一条说“开始”的警报,然后我看到在eclipse的控制台中执行支持bean代码然后我收到一条说“完成”的警报然后我得到一个说“clientError”的警告以某种方式触发了onerror事件。 麻烦的是,我不确定具体的客户端错误是什么或如何得到它。 我怀疑问题是我的表单是在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未定义”是问题的症结所在。但我不知道那是什么,当我查看页面源时,我找不到任何名称。 有人看过这样的问题吗?