当我使用Javascript构建字符串时,为什么Oracle ADF不能为我转义引号?

<jsp:root ...>
 <f:view ...>
  <afh:html>
   <f:loadBundle basename="message" var="msg"/>
   <afh:head ...>
    <script>
     function validate() {
      var errorMessages = '';
      .
      .
      if (regNum == '') {
       errorMessages = errorMessages + '<h:outputText value='#{msg['getDetails.validate.regNum']}"/>' + '\r\n';
      }
      .
      .


在我的消息资源文件中,我有类似

getDetails.validate.regNum=I'd enter the registration number if I were you.


真正的文字是带有重音符号的爱尔兰语,我可以看到重音符号被转义了,但是引号字符却没有。

最佳答案

因为单引号在HTML中不是非法的。

但是它们在JS中。您可以使用fn:replace()进行转义。

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<script>
   var foo = '<h:outputText value="#{fn:replace(msg['getDetails.validate.regNum'], "'", "\'")}"/>';

07-24 09:23