Я использую полностью серверный механизм i18n для своего веб-приложения Java.
Мы создали оболочку EL для функции java.text.MessageFormat.format, которая принимает в качестве входных данных локализованный шаблон и параметры.
Мне нужно отображать текст, который изменяется в зависимости от языка пользователя (на стороне сервера) и значения переменной Angular.
Рассмотрим следующий пример
Теперь {{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, но я не думаю, что это применимо к моему случаю, потому что линия трассировки стека отличается. Я также не использую зарезервированные имена переменных.
Что могло вызвать эту проблему?
Я хочу отобразить следующий HTML-код





Что касается конкретно синтаксической ошибки, это недопустимый синтаксис. Tomcat потерпит неудачу аналогичным образом. Это связано с тем, что неэкранированное использование скобок {} в других открытых скобках рассматривается как вложенные "eval-выражения" и не поддерживается стандартом, т.е. см. Спецификацию EL 3.0, раздел 1.2.1.