javafx fxml:未指定页面语言 - JavaScript 似乎不受支持

Ser*_*hii 1 javascript javafx fxml

<?language javascript?>FXMLLoader在尝试处理 fxml 脚本时无法识别该指令(见下文)。错误消息是“未指定页面语言”。我的 fxml 如下(为简洁起见,省略了实际代码):

<?language javascript?>

<!-- differnet includes -->
...

<!-- actual fxml -->
<StackPane xmlns="http://javafx.com/javafx"
           xmlns:fx="http://javafx.com/fxml"
           fx:controller="com.xxx.xxx.MainViewController"
           prefWidth="1200">

...

    <!-- somewhere in the middle of the fxml code -->
    <fx:script>
        function clearTool1() {
            tool1.setValue(null);
        }
    </fx:script>

...

<StackPane/>
Run Code Online (Sandbox Code Playgroud)

我调查了一下,发现ScriptEngineManagerjavafx 类实际上没有看到任何脚本引擎。特别是,在它的getEngineByName方法中,集合ScriptEngineFactory是空的,所以它没有找到任何JavaScript引擎,并在稍后抛出异常。我不会详细介绍这一点,因为目标不是调试 javafx 源代码,但我认为它作为提示可能很有用。

您是否知道为什么尽管 fxml 和其他所有内容都已正确编写,但脚本语言指令未被识别?

Ser*_*hii 5

当然,您必须将脚本引擎实现包含到您的 pom 中...

<dependency>
    <groupId>org.openjdk.nashorn</groudId>
    <artifactId>nashorn-core</artifactId>
    <version>15.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

感谢@Pointy 和@James_D 给出了相关提示。