As an extension of this question, I'm trying to insert Javascript to a <h:commandButton />
's onclick
property as action
is already rendering an ajax table.
What I want to do:
Get the selected items in a list box and turn them into parameters to be used in a JSF FileServlet
. i.e. para2=value1¶m=value2¶m=value3
Here's what I have:
<script type ="text/javascript">
function myScript() {
var box = document.getElementbyId('myForm:box');
var length = box.options.length;
var paramstring = "";
for (var i = 0; i < length; i++) {
if (i != (length - 1) {
if (box.options[i].selected) {
paramstring = paramstring + "param=" + box.options[i].value + "&";
}
} else {
paramstring = paramstring + "param=" + box.options[i].value;
}
}
if (document.getElementById('myForm:checkbox').checked) {
window.location='fileServlet? + paramstring;
}
}
</script>
What I get when page is loaded:
javax.servlet.ServletException: Error Parsing /page.xhtml: Error Traced[line:15] The content of elements must consist of well-formed character data or markup.
What doesn't trigger exception:
<script type ="text/javascript">
function myScript() {
var box = document.getElementbyId('myForm:box');
var length = box.options.length;
var paramstring = "";
if (document.getElementById('myForm:checkbox').checked) {
window.location='fileServlet? + paramstring;
}
}
</script>
As soon as I add in for (var i = 0; i < length; i++)
or even for (var i = 0; i < 10; i++)
the page wouldn't load. Why does it not like the for loop?
This question is related to
javascript
jsf
jsf-2
xhtml
facelets
I ran across this post today as I was running into the same issue and had the same problem of the javascript not running with the CDATA tags listed above. I corrected the CDATA tags to look like:
<script type="text/javascript">
//<![CDATA[
your javascript code here
//]]>
</script>
Then everything worked perfectly!
I had a git conflict left in my workspace.xml i.e.
<<<<———————HEAD
which caused the unknown tag error. It is a bit annoying that it doesn’t name the file.
Sometimes you will need this :
/*<![CDATA[*/
/*]]>*/
and not only this :
<![CDATA[
]]>
I solved this converting the JSP from XHTML to HTML, doing this in the begining:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
...
Source: Stackoverflow.com