我在 Websphere 中的 Angular-EL 表达式有什么问题?
What is wrong with my Angular-EL expression in Websphere?
我的 Java Web 应用程序使用完全服务器端的 i18n 机制。
我们为 java.text.MessageFormat.format
函数创建了一个 EL 包装器,它将本地化模式和参数作为输入。
我需要显示随用户语言(服务器端)和 Angular 变量值而变化的文本。
考虑以下示例
- 中文: "Hello, {0}"
- 它:"Ciao, {0}"
现在 {{vmApp.principal}}
是 'Bobby'
以下类型的表达式在 Websphere 中不起作用
${acme:messageFormat1(messages.GREETING,'{{vmApp.principal}}'}
错误是....
[22/03/18 16.14.22:169 CET] 000000bc webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/secure/admin/pages/process/detail.jsp]: com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: Exception caught while translating /secure/admin/pages/process/detail.jsp:
/secure/admin/pages/process/detail.jsp(8,9) --> JSPG0122E: Unable to parse EL function ${pnx:messageFormat1(messages.PROCESS_DETAIL_EXECUTION_STARTCTX,'{{vmApp.row.exceptionClass}.
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction(ELValidator.java:505)
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:123)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitJspELTextStart(ValidateVisitor.java:1268)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitCDataTag(ValidateVisitor.java:887)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:409)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:234)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216)
根据我的研究,我找到了 IBM this article,但我认为它不适用于我的案例,因为堆栈跟踪行不同。我也不使用保留变量名。
可能是什么导致了这个问题?
我要渲染以下内容HTML
- 中文: "Hello, {{vmApp.principal}}"
- 它:"Ciao, {{vmApp.principal}}"
具体到语法错误,它不是一个有效的语法。 Tomcat 将以类似的方式失败。这是因为在其他开括号中未转义使用括号 {} 被视为嵌套 "eval-expressions" 并且不受标准支持,即参见 EL 3.0 规范第 1.2.1 节。
我的 Java Web 应用程序使用完全服务器端的 i18n 机制。
我们为 java.text.MessageFormat.format
函数创建了一个 EL 包装器,它将本地化模式和参数作为输入。
我需要显示随用户语言(服务器端)和 Angular 变量值而变化的文本。
考虑以下示例
- 中文: "Hello, {0}"
- 它:"Ciao, {0}"
现在 {{vmApp.principal}}
是 'Bobby'
以下类型的表达式在 Websphere 中不起作用
${acme:messageFormat1(messages.GREETING,'{{vmApp.principal}}'}
错误是....
[22/03/18 16.14.22:169 CET] 000000bc webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/secure/admin/pages/process/detail.jsp]: com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: Exception caught while translating /secure/admin/pages/process/detail.jsp:
/secure/admin/pages/process/detail.jsp(8,9) --> JSPG0122E: Unable to parse EL function ${pnx:messageFormat1(messages.PROCESS_DETAIL_EXECUTION_STARTCTX,'{{vmApp.row.exceptionClass}.
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateElFunction(ELValidator.java:505)
at com.ibm.ws.jsp.translator.visitor.validator.ELValidator.validateELExpression(ELValidator.java:123)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitJspELTextStart(ValidateVisitor.java:1268)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitCDataTag(ValidateVisitor.java:887)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:409)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:369)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:419)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:234)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216)
根据我的研究,我找到了 IBM this article,但我认为它不适用于我的案例,因为堆栈跟踪行不同。我也不使用保留变量名。
可能是什么导致了这个问题?
我要渲染以下内容HTML
- 中文: "Hello, {{vmApp.principal}}"
- 它:"Ciao, {{vmApp.principal}}"
具体到语法错误,它不是一个有效的语法。 Tomcat 将以类似的方式失败。这是因为在其他开括号中未转义使用括号 {} 被视为嵌套 "eval-expressions" 并且不受标准支持,即参见 EL 3.0 规范第 1.2.1 节。