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?

1 Answer 1

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>
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks I knew about the external js file, but I was curious to solve it "in page". Thanks for the solution

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.