Domino 12.0.2中getRequestPathInfo()返回null问题求助
问题原因及解决办法
原因
Domino 12.0.2版本对XPage请求生命周期的初始化逻辑做了调整,beforePageLoad属于页面加载的极早期阶段,此时getRequestPathInfo()依赖的请求路径信息尚未完成初始化,导致返回null。而旧版本Domino中,请求路径信息的初始化时机更早,因此该代码能正常返回值。
解决办法
方法1:直接获取请求参数(推荐)
如果UNID是通过URL参数(如documentId)传递的,不需要解析路径,直接从请求参数中提取更可靠:
var request = facesContext.getExternalContext().getRequest(); var unid = request.getParameter("documentId"); // 或者用XSPContext的参数映射 var xspContext = com.ibm.xsp.context.XSPContext.getXSPContext(facesContext); var unid = xspContext.getRequestParameterMap().get("documentId");
方法2:获取完整请求URL并解析
若必须通过路径信息获取,可以通过getRequestURI()和getQueryString()拼接完整URL后再解析:
var externalContext = facesContext.getExternalContext(); var request = externalContext.getRequest(); var requestUri = request.getRequestURI(); var queryString = request.getQueryString(); var fullUrl = queryString ? requestUri + "?" + queryString : requestUri; // 根据你的URL结构解析UNID,比如用正则匹配 var unidMatch = fullUrl.match(/\/([0-9A-F]{32})\/?/i); var unid = unidMatch ? unidMatch[1] : null;
方法3:利用XSPContext获取请求URL
XSPContext提供了更适配XPage的请求信息获取方式,在早期阶段兼容性更好:
var xspContext = com.ibm.xsp.context.XSPContext.getXSPContext(facesContext); var requestUrl = xspContext.getRequestUrl().toString(); // 解析UNID逻辑同方法2 var unidMatch = requestUrl.match(/\/([0-9A-F]{32})\/?/i); var unid = unidMatch ? unidMatch[1] : null;
内容的提问来源于stack exchange,提问作者Peter Della-Nebbia
相关产品推荐
相关产品推荐

