Install4J:成功 JDBC 连接检查后向用户反馈

Install4J: give feedback to user after successful JDBC connection check

我正在尝试在 Install4J 6.1.6 中构建以下表单:

输入主机和端口号后,用户可以通过按Test connection 按钮检查这些MySQL 设置是否正确。

Host 的变量被称为 mysqlHost 端口的变量是 mysqlPort

我最初有一个问题,用户输入的内容只有在按下 Next > 按钮时才会保存到变量中,但我可以通过添加来解决这个问题 formEnvironment.saveFormComponents() 到两个输入字段的 Key listener script

我为 Test Connection 按钮设置了以下 "Check JDBC connection" 操作:

它工作正常,当主机和端口设置不正确时,用户会看到一个弹出错误消息。

但是,当 JDBC 连接正常时,我无法显示成功消息或标签。 我尝试使用以下可见性脚本添加绿色成功标签(如第一张图片所示):

String errorMessage = (String)context.getVariable("mysqlTestError");
return errorMessage.length() == 0;

所以我正在尝试检查 mysqlTestError 变量是否为空。

但它不起作用,从不显示成功标签。

怎么只有连接检查成功才显示?

标签表单组件的可见性脚本仅在屏幕显示时进行评估,因此在 JDBC 连接检查后不会更新可见性。

您可以通过向按钮表单组件的 "Action list" 添加 "Run script" 操作以编程方式更新标签:

String errorMessage = (String)context.getVariable("mysqlTestError");
FormComponent formComponent = formEnvironment.getFormComponentById("ID of label");
formComponent.setVisible(!errorMessage.isEmpty());
((JLabel)formComponent.getConfigurationObject()).setText(errorMessage);

return true;

在 install4j 6 中,"formEnvironment" 参数在操作列表中不可用,您必须通过

获取它
FormEnvironment formEnvironment = ((FormPanelContainer)context.getScreenById("ID of screen")).getFormEnvironment();