我从REST服务获得堆栈跟踪,如下所示:
oracle.mds.core.MetadataNotFoundException: MDS-00013: no metadata found for metadata object "/WEB-INF/root_menu_tm.xml" [[MDS-00201: PDocument not found in MetadataStore : [store-type=DefaultMetadataStore app-name=ORA_CRM_UIAPP lookup-order=ServletContext,Classpath] at oracle.mds.core.MetadataObject.getBaseMO(MetadataObject.java:1600) at oracle.mds.core.MDSSession.getMetadataObject(MDSSession.java:1663) at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel.getMetadatObject(ApplicationsMenuModel.java:891) at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel._createModel(ApplicationsMenuModel.java:492) at oracle.apps.fnd.applcore.patterns.uishell.model.ApplicationsMenuModel.setSource(ApplicationsMenuModel.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
我试图在我的javascript中格式化它,然后在UI上显示。这个想法很简单:只需替换所有
<space>at
带
<br/>at
我尝试了各种选项:
var trace = (d.MsgDetails).replace(new RegExp('\sat','g'),'</p><p>at');
或
var trace = (d.MsgDetails).replace(new RegExp(' at','g'),'</p><p>at');
或
var trace = (d.MsgDetails).replace(/at/g),'</p><p>at');
或
var trace = (d.MsgDetails).replace(/ at/g),'</p><p>at');
没有任何作用。我希望它看起来的空间真的是一个空间。删除空间工作正常,但这不是我想要的,因为它也会打破好话。
答案 0 :(得分:1)
“at”之前的字符是一个标签,所以:
var trace = d.MsgDetails.replace(/\tat/g, '</p><p>at');
(如果您在整个\s
的字符串文字中转义了\
,那么第一个带有\\s
的正则表达式就会有用;字符串文字'\s'
相当于's'
。不要使用RegExp
构造函数来创建静态正则表达式。)
如果其中有一些换行符,那么更简洁的解决方案可能是:
var traceLines = d.MsgDetails.split('\n');
var trace = document.createDocumentFragment();
traceLines.forEach(function (line) {
trace.appendChild(document.createElement('p')).textContent = line;
});