Страница лицевых страниц JSF не содержит строки javascript с символом '&' - PullRequest
5 голосов
/ 22 августа 2011

на странице Facelet JSF (.xhtml) У меня есть этот код javascript

<script type="text/javascript">
        function navigateToDetail() {
            var id = document.getElementById("idElemento").value;
            alert(id);
            var isPratica = document.getElementById("isPratica").value;
            alert(isPratica);
            var box = "#{boxCtrl.idBox}";
            alert(box);             
            if (isPratica==true)
                window.location = "DettaglioRichiesta.xhtml?id=" + id + "&box=" + box;
            else
                window.location = "../Richieste/DettaglioRichiesta.xhtml?id=" + id + "&box=" + box;

        }
    </script>

Он не работает, потому что движок jfs считает, что «& box» относится к привязке, и он говорит:

Error Parsing /Box/ListaRichieste.xhtml: Error Traced[line: 20] The reference to entity "box" must end with the ';' delimiter

Могу ли я избежать этого поведения?

1 Ответ

13 голосов
/ 22 августа 2011

Facelets - это технология представления на основе XML.& - это специальный символ XML .Он интерпретируется как начало сущности XML, такой как &nbsp;, &#160; и т. Д. Поэтому он ищет конечный символ ;, но не нашел ни одного, поэтому выдает эту ошибку.

Toдля представления & буквально внутри XML-документа, вам нужно использовать &amp; вместо &.

window.location = "DettaglioRichiesta.xhtml?id=" + id + "&amp;box=" + box;

Вы также можете просто поместить этот код JS в свой собственный файл .js, который вы включите в <script src>, чтобы вам не приходилось возиться с особыми символами XML в коде JS.1017 *

<script type="text/javascript" src="your.js"></script>
...