背景:具有选项卡式表格(来自容器控件)和多个数据源的XPage,每个选项卡一个。如果用户刷新页面,我遇到了保存按钮创建重复的问题。为了解决这个问题,我实施了Tommy Valand创建的这个解决方案。 http://dontpanic82.blogspot.com/2010/06/xpages-avoid-saving-duplicate-documents.html需要将URL指向xpages中选项卡式表的第二个选项卡
问题是,当用户在第二个选项卡上,并使用全面刷新(我必须有这个由于附件)保存文档。该功能很好,除了...
问题:重定向总是把用户带到第一个选项卡。除了第一个选项卡外,这对每个选项卡显然都是一个问题。
我想知道一种方法将URL直接导向到第二个选项卡。我试图修改Tommy的代码来包含一个哈希标记,但我一直无法得到这个工作。我甚至不确定散列标签是否可以与xpages一起使用。在此先感谢帮助解决此问题。
function redirectToCurrentDocument(switchMode:boolean, tab){
try {
if(typeof currentDocument === 'undefined' || viewScope.stopRedirect){ return; }
// Gets the name of the XPage. E.g. /Person.xsp
var page = view.getPageName();
// Finds extra parameters, strips away XPages parameters/trims leading &
var parameters = context.getUrl().getQueryString().substring(1);
var extraParameters = parameters.replace(
/([&\?^]*_[a-z0-9=]+[&]{0,1})|(action=\w{4}Document[\&]{0,1})|(documentId=[\w]{32}[\&]{0,1})/ig, '').replace(/\&$/, '');
// Gets the unid of the current document
//var unid = currentDocument.getDocument().getUniversalID();
//var unid = document1.getDocument().getUniversalID(); //changed this line to make work with multiple data sources - SJZ
var unid = document1.getDocument().getNoteID(); //also changed to use NoteID since it gave runtime errors for new documents - SJZ
// Sets/changes the action according according to the mode the document is in
var isEditable = currentDocument.isEditable();
if(switchMode){ isEditable = !isEditable; } // false -> true/true -> false
var action = (isEditable) ? 'editDocument' : 'openDocument';
// Open the current document via a get request
var redirectUrl = page + '?documentId=' + unid + '&action=' + action;
if(extraParameters){ redirectUrl += '&' + extraParameters; }
print("tab=" + tab)
if(tab == "Invoices") { redirectUrl += '#tabPanel1'; }
if(tab == "Credits") { redirectUrl += '#view:_id1:tabPanel2:editPanelCredits'; }
print(redirectUrl);
context.redirectToPage(redirectUrl);
} catch(e){ /* Exception logging */ }
}
使用getComponent()与组件交互,而不是'#view:_id1:tabPanel2:editPanelCredits'。还有一个范围变量来设置哪个标签应该是活动的。 –
只是一个提示:在URL中使用param(或者像你已经做的那样),并使用OnPageLoad客户端脚本来调用局部刷新来选择选项卡。 –