插入到 sql 的按钮:事件处理程序不在命名空间中或脚本中有错误
Posted
技术标签:
【中文标题】插入到 sql 的按钮:事件处理程序不在命名空间中或脚本中有错误【英文标题】:Button to insert in to sql : event handler is not in the Namespace or there is an error in the script 【发布时间】:2016-12-30 12:22:44 【问题描述】:我正在使用 javafx 和 sqllite 构建这个程序 我在 fxml 中有带有 fx:id button1 的按钮 和 onAction:WriteToSql
package valgykla;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextField;
import javafx.event.ActionEvent;
/**
* FXML Controller class
*
* @author Lukas
*/
public class MeniuController implements Initializable
@FXML
private Button button1;
@FXML
public static void WriteToSql(ActionEvent sql)
Connection con = null;
PreparedStatement prSt = null;
try
Class.forName("org.sqlite.JDBC");
con = DriverManager.
getConnection("jdbc:sqlite:database.db");
String query = "insert into Meniu(name,code) values(?,?)";
prSt = con.prepareStatement(query);
prSt.setString(1, "jack");
prSt.setString(12, "02545");
int count = prSt.executeUpdate();
catch (ClassNotFoundException | SQLException e)
// TODO Auto-generated catch block
// TODO Auto-generated catch block
finally
try
if(prSt != null) prSt.close();
if(con != null) con.close();
catch(Exception ex)
public void initialize(URL url, ResourceBundle rb)
// TODO
很遗憾我得到了错误
Caused by: javafx.fxml.LoadException: Error resolving onAction='#WriteToSql', either the event handler is not in the Namespace or there is an error in the script.
file:/C:/Users/Lukas/Desktop/lukasX/Valgykla/dist/run1382723305/Valgykla.jar!/valgykla/Meniu.fxml:29
【问题讨论】:
【参考方案1】:WriteToSql
方法是static
。 JavaFX 不再考虑事件处理程序的控制器的static
方法...(另请参阅javafx 8 compatibility issues - FXML static fields)
只需删除 static
关键字即可解决问题。此外,由于您使用@FXML
注释了该方法,因此您也可以将其设为private
:
@FXML
private void WriteToSql(ActionEvent sql)
...
【讨论】:
【参考方案2】:emmmm,当我第一次在 Eclipse 上尝试时,我使用 onAction="#youfactionname",然后导致错误。我检查了所有内容,没有错。然后我删除符号 #,它运行良好。但过了一会儿,当我尝试运行另一个程序时,它会出错,我不知道为什么,我在网上搜索它,看到你在你的 onAction 名称中输入了 #,最后我将 # 放回我的 onAction 名称,奇怪的是它可以工作。 我的ide总是发生这么多奇怪的问题........不仅是食人鱼
【讨论】:
你能稍微清理一下语言和格式吗?目前尚不清楚这是一个有效的答案,还是“我也是”类型的回应。请保持简短、清晰和中肯的回答。以上是关于插入到 sql 的按钮:事件处理程序不在命名空间中或脚本中有错误的主要内容,如果未能解决你的问题,请参考以下文章
Vanilla JavaScript 中的事件处理程序命名空间
JavaScript 命名空间和 jQuery 事件处理程序