JSF facelet page doesn't javascript string with '&' character
Asked Answered
D

1

5

in a JSF facelet page (.xhtml) I have this javascript code

<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>

It doesn't work because the jfs engine think that "&box" is relative to a bindign, and it says:

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

I can I avoid this behaviour?

Discontinue answered 22/8, 2011 at 17:1 Comment(0)
S
14

Facelets is a XML based view technology. The & is a XML special character. It's interpreted as start of a XML entity like &nbsp;, &#160;, etc. It is therefore looking for the end character ;, but it found none, so it is throwing this error.

To represent the & literally inside a XML document, you need to use &amp; instead of &.

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

You can also just put that JS code in its own .js file which you include by <script src> so that you don't need to fiddle with XML special characters in the JS code.

<script type="text/javascript" src="your.js"></script>
Slippy answered 22/8, 2011 at 17:4 Comment(1)
Thanks I knew about the external js file, but I was curious to solve it "in page". Thanks for the solutionDiscontinue

© 2022 - 2024 — McMap. All rights reserved.