在JSF facelet页面(.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引擎认为“&amp; box”与绑定有关,它说:
Error Parsing /Box/ListaRichieste.xhtml: Error Traced[line: 20] The reference to entity "box" must end with the ';' delimiter
我可以避免这种行为吗?
答案 0 :(得分:13)
Facelets是一种基于XML的视图技术。 &
是XML special character。它被解释为像
, 
等XML实体的开始。因此它正在寻找结束字符;
,但它没有找到,所以它抛出了这个错误。 / p>
要在XML文档中逐字表示&
,您需要使用&
而不是&
。
window.location = "DettaglioRichiesta.xhtml?id=" + id + "&box=" + box;
您也可以将该JS代码放在.js
所包含的<script src>
文件中,这样您就不需要在JS代码中使用XML特殊字符。
<script type="text/javascript" src="your.js"></script>