在使用提交按钮和IE的xpages中似乎存在某种问题。所以我必须按如下方式设置提交按钮。
<xp:button value="Submit" id="button2" type="submit">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="panelErrMsg" immediate="false" save="true">
当我这样做时,我发现“在更新某些页面xhr取消时发生了错误”,然后按Enter键或单击按钮。只要按钮不是类型提交它就可以正常工作但当然我需要点击按钮,我想选择按回车。
提交按钮是表单上的唯一按钮。
更新:以下是演示此问题的完整示例:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">Unique Number: 
<xp:text escape="true" id="computedField1" value="#{javascript:@Unique();}"></xp:text>
<xp:br></xp:br>
<xp:button id="button1" value="Update" type="submit">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="computedField1">
</xp:eventHandler>
</xp:button>
答案 0 :(得分:3)
由于sumbit按钮和部分刷新的组合而发生错误。
部分刷新是异步处理的,这意味着部分刷新(xhr调用)被发送到服务器,然后让浏览器继续“他的工作”。现在提交表单而不是等待响应,xhr调用被取消。 取消xhr呼叫会弹出警报。
有两种解决方法:
覆盖部分刷新的错误方法
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="computedField1" onError="return" >
</xp:eventHandler>
更新日期:2013年6月21日
以下是执行同步xhr调用的代码:
// --- hijack dojo XHR calls
if( !dojo._xhr )
dojo._xhr = dojo.xhr;
var loadOld;
function hijacked( response, ioArgs ){
dojo.xhr = dojo._xhr;
delete dojo._xhr;
loadOld( response, ioArgs ); // call the original function
}
dojo.xhr = function( mode, args, bool ){
args["sync"] = true;
loadOld = args["load"];
args["load"] = hijacked;
dojo._xhr( mode, args, bool );
}
代码会覆盖xhr Calls的现有Dojo函数,以将所需参数 sync 设置为 true 。如果部分刷新完成,则恢复原始功能。
答案 1 :(得分:1)
当您将其设置为refreshMode =“full”时,您将收到完整的错误消息。当提交导致错误条件时,将显示“发生错误”消息,该错误条件将显示在完整提交中。更改它并查看错误消息。