首页 文章

我在Websphere中使用Angular-EL表达式有什么问题?

提问于
浏览
0

我在Java Web应用程序中使用了完全服务器端的i18n机制 .

我们为 java.text.MessageFormat.format 函数创建了一个EL包装器,它将一个局部模式和参数作为输入 .

我需要显示随用户语言(服务器端)和Angular变量值而变化的文本 .

请考虑以下示例

  • EN:"Hello, {0}"

  • IT:"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

  • EN:"Hello, {}"

  • IT:"Ciao, {}"

1 回答

  • 1

    至于语法错误,它不是一个有效的语法 . Tomcat会以类似的方式失败 . 这是因为在其他开放括号内的未转义使用括号{}被视为嵌套的“eval-expressions”并且标准不支持,即参见EL 3.0第1.2.1节的规范 .

相关问题