1

我正在尝试替换 Alfresco 中 JSP 文件中的部分字符串(您可以在此处找到它)。

更具体地说,我想在第 54 行的“fullName”之后显示更多信息。我需要的信息作为“GROUP_something”形式的字符串存储在 r.id 中,我想要“something”。我可以毫无问题地显示 r.id,如下面的片段所示,但是一旦我尝试使用 fn:replace 删除 GROUP_ 前缀,它就会崩溃。

原来的:

<h:outputText id="user-txt" value="#{r.fullName}" rendered="#{r.isGroup}" />

也可以:

<h:outputText id="user-txt" value="#{r.fullName} (#{r.id})" rendered="#{r.isGroup}" />

不工作:

<h:outputText id="user-txt" value="#{r.fullName} (#{fn:replace(r.id, 'GROUP_', '')})" rendered="#{r.isGroup}" />

完整代码: http: //pastebin.com/w8AXWUH1

完整的堆栈跟踪如下:

javax.faces.FacesException:在第 194 行处理 JSP 页面 /jsp/dialog/container.jsp 时发生异常

191:
192:
193:
194:“ />
195:
196:
197:


堆栈跟踪:
造成的:
org.apache.jasper.JasperException:在第 194 行处理 JSP 页面 /jsp/dialog/container.jsp 时发生异常

191:
192:
193:
194:“ />
195:
196:
197:


堆栈跟踪:
造成的:
org.apache.jasper.JasperException: javax.faces.FacesException: 在调用 encodeEnd 时出现异常:{Component-Path: [Class: javax.faces.component.UIViewRoot,ViewId: /jsp/dialog/container.jsp][Class: javax.faces.component.html.HtmlForm,Id: dialog][Class: javax.faces.component.UINamingContainer,Id: dialog-body][Class: org.alfresco.web.ui.common.component.UIPanel,Id: users-panel][Class: org.alfresco.web.ui.common.component.data.UIRichList,Id: users-list][Class: org.alfresco.web.ui.common.component.data.UIColumn,Id: _idJsp17][类:javax.faces.component.html.HtmlOutputText,Id:user-txt]}
造成的:
javax.faces.FacesException:在调用 encodeEnd 时出现异常:{Component-Path:[类:javax.faces.component.UIViewRoot,ViewId:/jsp/dialog/container.jsp][类:javax.faces.component.html。 HtmlForm,Id: dialog][Class: javax.faces.component.UINamingContainer,Id: dialog-body][Class: org.alfresco.web.ui.common.component.UIPanel,Id: users-panel][Class: org .alfresco.web.ui.common.component.data.UIRichList,Id: users-list][Class: org.alfresco.web.ui.common.component.data.UIColumn,Id: _idJsp17][Class: javax.faces .component.html.HtmlOutputText,Id: user-txt]}
造成的:
javax.faces.FacesException:无法使用路径检索组件的值:{Component-Path:[类:javax.faces.component.UIViewRoot,ViewId:/jsp/dialog/container.jsp][类:javax.faces.component .html.HtmlForm,Id: dialog][Class: javax.faces.component.UINamingContainer,Id: dialog-body][Class: org.alfresco.web.ui.common.component.UIPanel,Id: users-panel][类:org.alfresco.web.ui.common.component.data.UIRichList,Id:用户列表][类:org.alfresco.web.ui.common.component.data.UIColumn,Id:_idJsp17][类: javax.faces.component.html.HtmlOutputText,Id: user-txt]}
造成的:
javax.faces.el.E​​valuationException:无法获取表达式 '#{r.fullName} (#{fn:replace(r.id, 'GROUP_', '')})' 的值
造成的:
javax.faces.el.ReferenceSyntaxException:表达式中不支持的函数。功能:fn:替换

我无法理解这个错误,因为其他答案(例如this onethis one)提倡这种确切的方法。

我还添加了函数 taglib:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

在标题中。

任何帮助表示赞赏!

编辑:有关环境的更多信息:我正在使用 Alfresco 的“捆绑”版本,使用 Tomcat 7.0.30 作为容器。使用以下版本的库:

  • JSF Apache MyFaces v1.1.8(myfaces-api-1.1.8.jar 和 myfaces-impl-1.1.8.jar)
  • JSP Tomcat 的内置 Jasper (jasper.jar)
  • EL认为它是 Tomcat 的内置 Jasper-EL(通过 el-api.jar 和 jasper-el.jar),虽然Alfresco 还捆绑了 commons-el.jar(规范版本:2.0 和实现版本:1.0)
4

0 回答 0