Javafx 使用java和setvalue在基于codemirror的编辑器中加载文件时发生JSException
我有一个基于java的应用程序,它读取文件并在基于代码镜像的编辑器中显示相同的文件。java代码读取用户选择的文件并将其转换为字符串。然后使用“editor.setvalue”将字符串传递给编辑器。问题是任何硬编码的字符串都显示得很好。但是如果它是从文件中读取的,那么我会得到一个错误Javafx 使用java和setvalue在基于codemirror的编辑器中加载文件时发生JSException,javafx,codemirror,Javafx,Codemirror,我有一个基于java的应用程序,它读取文件并在基于代码镜像的编辑器中显示相同的文件。java代码读取用户选择的文件并将其转换为字符串。然后使用“editor.setvalue”将字符串传递给编辑器。问题是任何硬编码的字符串都显示得很好。但是如果它是从文件中读取的,那么我会得到一个错误 Caused by: netscape.javascript.JSException: SyntaxError: Unexpected EOF 我能够正确打印文件,没有问题 这就是我在java中尝试做的事情 St
Caused by: netscape.javascript.JSException: SyntaxError: Unexpected EOF
我能够正确打印文件,没有问题
这就是我在java中尝试做的事情
String sb = FileUtils.readFileToString(file);
webengine.executeScript("editor.setValue('" + sb + "');");
“webengine.executescript”是一种javafx方式,用于调用webengine中呈现的html可见的javascript函数
我的代码镜像代码
<form>
<textarea id="code" name="code">
</textarea>
</form>
<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
lineNumbers : true,
matchBrackets : true,
mode : "text/x-java",
theme : "theme_value",
indentUnit : 4,
gutter: true
});
</script>
var editor=CodeMirror.fromTextArea(document.getElementById(“代码”){
行号:对,
是的,
模式:“text/x-java”,
主题:“主题价值”,
单位:4,
真的吗
});
我无法理解是哪些角色导致了此问题。
我尝试使用“+”操作符添加两个字符串,并显示添加的字符串。但是,当我在字符串之间插入换行符“\n”时,我开始出现相同的错误。我尝试用
替换换行符,但是,在不中断行的情况下,它们显示出来的帮助不大。问题是,在调用
executeScript
时,如果传递到给定Javascript方法中的字符串包含任何换行符或单引号,则会导致语法错误
快速修复:
content = content.replace("'", "\\'");
content = content.replace(System.getProperty("line.separator"), "\\n");
content = content.replace("\n", "\\n");
content = content.replace("\r", "\\n");
这样,换行符和单引号将保留在JavaScript方法中