【问题标题】:How to use MDS customization to add JSTL functions tag library?如何使用 MDS 自定义添加 JSTL 函数标签库?
【发布时间】:2013-11-18 05:14:51
【问题描述】:

我在WebCenter Portal 11.1.1.6.0 folderViewer任务流(oracle.webcenter.doclib.view.jsf.taskflows.folderViewer)中的folderViewer.jsff视图中添加了JSTL函数标签库,这样我就可以进行字符串操作了在渲染视图之前。

我使用 folderViewer.jsff.xml MDS 自定义文件中的以下 mds:modify 块添加了它:

<mds:modify element="(xmlns(jsp=http://java.sun.com/JSP/Page))/jsp:root">
  <mds:attribute name="version" value="2.1"/>
  <mds:attribute name="xmlns:fn" value="http://java.sun.com/jsp/jstl/functions"/>
</mds:modify>

这允许我在 EL 语句中使用 JSTL 函数,例如:startFolderPath=#{fn:replace(fn:substringAfter(item.url,'path'),'%20','%2520')}

但是,在 folderViewer 任务流中似乎有一个意想不到的副作用。当文件夹中有超过 50 个子文件夹时,滚动超过第 50 个子文件夹并尝试导航到其中一个子文件夹(即导航到子文件夹 #51)会导致显示 WebCenter 错误页面并在日志中显示以下错误:

<Oct 28, 2013 3:10:54 PM CDT> <Error>     <oracle.webcenter.webcenterapp.internal.view.webapp> <BEA-000000> <
oracle.mds.exception.MDSRuntimeException: invalid namespace http://java.sun.com/JSP/Page for prefix xmlns
invalid namespace http://java.sun.com/JSP/Page for prefix xmlns
    at oracle.mds.core.MOTxnState.getDocument(MOTxnState.java:266)
    at oracle.mds.core.UpdateableMOContent.getDocument(UpdateableMOContent.java:561)
    at oracle.mds.core.MetadataObject.getDocument(MetadataObject.java:449)
    at oracle.mds.core.MetadataObject.getDocument(MetadataObject.java:396)
...
    at     weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
>
<Oct 28, 2013 3:10:54 PM CDT> <Error> <oracle.webcenter.webcenterapp> <BEA-000000>      <Internal Error (WCS#2013.10.28.15.10.54)>

如果我删除添加 JSTL Functions 标记库的 folderViewer.jsff.xml 的 MDS 自定义,则不存在此问题。

有人知道通过 MDS 自定义添加新标签库的不同方法吗?

谢谢, 乔

【问题讨论】:

    标签: oracle-adf portal webcenter


    【解决方案1】:

    它似乎试图给出前缀 xmlns 而不是 JSP

    我只是想知道如果你把上面的代码改成下面的,会发生什么

    <mds:modify element="jsp:root">
      <mds:attribute name="version" value="2.1"/>
      <mds:attribute name="xmlns:jsp" value="http://java.sun.com/JSP/Page"/>
      <mds:attribute name="xmlns:fn" value="http://java.sun.com/jsp/jstl/functions"/>
    </mds:modify>
    

    【讨论】:

    • 感谢 Amr,我尝试了您的建议,但更改后似乎无法再访问 JSTL 函数标记库(请参阅下面的错误日志)。另外,我尝试了 我看到了同样的错误
    • "错误:函数 fn:substringAfter 具有无效前缀或使用未定义的默认命名空间。更正前缀或在 jsp 文档中,将函数放在定义标记库命名空间的标记内"
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多