java.lang.NullPointerException 在 org.datafx.provider.PublishingTask$1.run(PublishingTask.java:41)
java.lang.NullPointerException at org.datafx.provider.PublishingTask$1.run(PublishingTask.java:41)
使用 datafx 从 rest 脚本中读取 json。
下面是代码
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
label.setText("Hello World!");
JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
RestSource test = RestSourceBuilder.create()
.converter(jsonConvert)
.host("http://devel.com.au")
.path("cgi-bin").path("ssinternalweb-jcgi.sh")
.queryParam("Program", "appfx/CaseTest.p")
.queryParam("ProcName", "FXRequest")
.queryParam("TestParam", "aValue").build();
ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
.dataReader(test)
.build();
Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();
lvCases.setItems(retrieve.getValue());
}
@Override
public void initialize(URL url, ResourceBundle rb) {
lvCases.setCellFactory(l -> new CaseTableCell());
lvCases.getItems().add(new CaseTable(999, "Loading..."));
}
当工作人员开始处理结果时,我收到以下错误消息
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.datafx.provider.PublishingTask.run(PublishingTask.java:41)
at com.sun.javafx.application.PlatformImpl.lambda$null4(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda/1175034525.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater5(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda/501263526.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null1(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda/96639997.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
我在 class 中有一个断点,我正在尝试创建那个似乎正在接收正确值的断点。唯一的问题是列表视图中没有显示在屏幕上。
private ListView<CaseTable> lvCases;
如我的评论之一所述,应该设置结果列表并且不会收到此错误消息。是不同的线,这就是为什么思想不相关但结果是完全相同的问题。
以下是现在可用的更新代码。
@FXML
private void handleButtonAction(ActionEvent event) {
JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
RestSource test = RestSourceBuilder.create()
.converter(jsonConvert)
.host("http://devel.com.au")
.path("cgi-bin").path("ssinternalweb-jcgi.sh")
.queryParam("Program", "appfx/CaseTest.p")
.queryParam("ProcName", "FXRequest")
.queryParam("TestParam", "aValue").build();
lvCases.getItems().removeAll(lvCases.getItems());
ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
.dataReader(test)
.resultList(lvCases.getItems())
.build();
Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
lvCases.setCellFactory(l -> new CaseTableCell());
lvCases.getItems().add(new CaseTable(999, "Loading..."));
}
参考这里了解更多详情
https://bitbucket.org/datafx/datafx/issue/9/npe-when-resultlist-not-specified
使用 datafx 从 rest 脚本中读取 json。 下面是代码
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
label.setText("Hello World!");
JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
RestSource test = RestSourceBuilder.create()
.converter(jsonConvert)
.host("http://devel.com.au")
.path("cgi-bin").path("ssinternalweb-jcgi.sh")
.queryParam("Program", "appfx/CaseTest.p")
.queryParam("ProcName", "FXRequest")
.queryParam("TestParam", "aValue").build();
ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
.dataReader(test)
.build();
Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();
lvCases.setItems(retrieve.getValue());
}
@Override
public void initialize(URL url, ResourceBundle rb) {
lvCases.setCellFactory(l -> new CaseTableCell());
lvCases.getItems().add(new CaseTable(999, "Loading..."));
}
当工作人员开始处理结果时,我收到以下错误消息
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.datafx.provider.PublishingTask.run(PublishingTask.java:41)
at com.sun.javafx.application.PlatformImpl.lambda$null4(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda/1175034525.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater5(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda/501263526.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null1(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda/96639997.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
我在 class 中有一个断点,我正在尝试创建那个似乎正在接收正确值的断点。唯一的问题是列表视图中没有显示在屏幕上。
private ListView<CaseTable> lvCases;
如我的评论之一所述,应该设置结果列表并且不会收到此错误消息。是不同的线,这就是为什么思想不相关但结果是完全相同的问题。 以下是现在可用的更新代码。
@FXML
private void handleButtonAction(ActionEvent event) {
JsonConverter jsonConvert = new JsonConverter("jsonCase", CaseTable.class);
RestSource test = RestSourceBuilder.create()
.converter(jsonConvert)
.host("http://devel.com.au")
.path("cgi-bin").path("ssinternalweb-jcgi.sh")
.queryParam("Program", "appfx/CaseTest.p")
.queryParam("ProcName", "FXRequest")
.queryParam("TestParam", "aValue").build();
lvCases.getItems().removeAll(lvCases.getItems());
ListDataProvider<CaseTable> ldp = ListDataProviderBuilder.create()
.dataReader(test)
.resultList(lvCases.getItems())
.build();
Worker<ObservableList<CaseTable>>retrieve = ldp.retrieve();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
lvCases.setCellFactory(l -> new CaseTableCell());
lvCases.getItems().add(new CaseTable(999, "Loading..."));
}
参考这里了解更多详情
https://bitbucket.org/datafx/datafx/issue/9/npe-when-resultlist-not-specified