Если вы просто включите escapeXml в false, как подсказывает @BalusC, вы добавите уязвимость XSS на свою страницу. Вместо этого вы должны кодировать пользовательский ввод во время внедрения в язык назначения и экранирующие символы, которые будут оцениваться на языке назначения. В этом случае, если пользовательский ввод содержал символ одинарной кавычки (я предполагаю, что строковый литерал в исходном примере должен был быть заключен в одинарные кавычки, но то же самое было бы верно для двойных кавычек, если вы их использовали), любой код JavaScript, который следует за ним, будет интерпретирован браузером и выполнен. Чтобы безопасно делать то, что вы пытаетесь сделать, вы должны изменить строку в downloadfile.jsp на:
selectedFile = '${fn:replace(param.fileName, "'", "\'")}';
Это будет экранировать только одинарные кавычки, которые в противном случае завершат объявление строкового литерала.
Если вы используете двойные кавычки, то это будет уместно:
selectedFile = "${fn:replace(param.fileName, '"', '\"')}";
Стоит отметить, что escapeXml может быть подходящим для экранирования строковых литералов JavaScript (и часто это так), когда строковый литерал в конечном итоге будет выгружен в разметку HTML. Однако в этом случае значение не должно быть экранированным XML, поскольку оно оценивается в контексте пути к файлу, а не в контексте HTML.