我正在将Spark Java Web Framework与Apache的Velocity Template Engine结合使用,以帮助设计一个从SQL数据库中提取数据的响应式Web应用程序.使用SQL2o我创建了一些自定义类类型的Java对象,即用户,组,站点等.
我已经检查过并填充了创建的对象列表.当我然后将我的对象列表放入一个hashmap并返回一个ModelandView时,出于某种原因我的列表就在那里但我不能在vtl中使用它的任何属性.
main方法和Spark代码的相关部分:
public static void main(String[] args) {
WEB_LOGMGR loggr = new WEB_LOGMGR(true);
WEB_DBMGR dbmgr = new WEB_DBMGR(true, loggr);
Model backend = new ScadaModel(dbmgr, loggr);
System.out.println(dataToJson(backend.getUsers()));
staticFiles.location("/");
staticFiles.externalLocation("/");
String layout = "/templates/layout.vtl";
//secure("public/keystore.jks", "password", null, null);
before("/form", (request, response) -> {
boolean authenticated = false;
// ... check if authenticated
if (!authenticated) {
halt(401, "You are not welcome here");
}
});
get("/", (req, res) -> {
HashMap pdata = new HashMap();
pdata.put("template", "/templates/main.vtl");
return …Run Code Online (Sandbox Code Playgroud) 我正在使用 runAsync() 运行数百个函数。所有的函数都会修改一些静态可用的列表,因此不需要返回任何内容。在继续我的处理之前,我想确保它们都完成了。这是适当的等待方式吗?有没有更简单的方法来完成我想要做的事情?
List<CompletableFuture<Void>> futures = new ArrayList<>();
active_sites.forEach(site -> site.getEntryPoints().stream().map(EntryPoint::scanEntryPoint).forEach(futures::add));
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
Run Code Online (Sandbox Code Playgroud) 我对 React、函数式编程、Javascript 和 JSX 还很陌生,所以如果这是一个愚蠢的问题,请简单点。
我正在修改react-table v7 中的示例material-ui 表之一。原始代码可以在这里找到。该示例功能齐全,并且使用 React Hooks 而不是类,我正在使用的模板的所有组件也是如此(向 Creative-tim.com 致敬!)
我的父函数(代表仪表板应用程序中的页面),例如 Users.js 或 Stations.js 从 useEffect 挂钩内的后端 api 获取数据。然后,该数据作为 props 传递给我的子组件 ReactTables.js
由于某种原因,在父页面的 useEffect 完成后,ReactTables.js 不会收到对“data”属性的更改。但是,一旦我修改 ReactTables 子组件(在本例中为 AddAlarmDialog.js)中的数据,表就会重新呈现,并且我的所有数据都会突然出现。
当父组件的 useEffect 返回数据时,如何触发子组件的重新渲染?我注意到在旧版本的 React 中,有一个名为 componentWillReceiveProps() 的生命周期函数。这是我需要在这里效仿的行为吗?
父组件示例 (Alarms.js):
import React, { useEffect, useState } from "react";
// @material-ui/core components
// components and whatnot
import GridContainer from "components/Grid/GridContainer.js";
import GridItem from "components/Grid/GridItem.js";
import ReactTables from "../../components/Table/ReactTables";
import { server } from "../../variables/sitevars.js";
export default function …Run Code Online (Sandbox Code Playgroud) 我编写了一个可调用的函数来轮询远程客户端以获取信息,并以List形式返回该信息.我正在使用threadpoolexecutor,for循环,以及Future与多个远程客户端并行执行任务.然后我将所有Future列表与addAll()组合在一起,并使用巨型组合列表.
我的问题是,使用parallelstream()会比使用future和for循环更有效吗?编码肯定更容易!如果我走那条路,我会不再需要threadpoolexecutor?
谢谢!
for(SiteInfo site : active_sites) {
TAG_SCANNER scanr = new TAG_SCANNER(site, loggr);
Future<List<TagInfo>> result = threadmaker.submit(scanr);
//SOUND THE ALARMS
try {
alarm_tags.addAll(result.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
可能的解决方案代 Netbeans在这些方面提出了一些建议
active_sites.parallelstream().map((site) -> new TAG_SCANNER(site, loggr)).map((scanr) -> threadmaker.submit(scanr)).forEach((result) -> {
//SOUND THE ALARMS
try {
alarm_tags.addAll(result.get());
}
catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Spark 框架创建一个 Web 应用程序,并且我一直在浏览他们网站上的教程。目前,我正在处理他们的模板部分,但是我似乎无法让项目识别出我的 css 和我的模板在我的资源文件夹中。
我正在使用 Netbeans 和 Maven 来管理我的依赖项。
谁能帮我弄清楚如何在这种环境中适当地设置我的相对路径/创建我的项目文件夹?我是 Maven 和 Spark 的新手,所以请放轻松。
java ×4
spark-java ×2
future ×1
java-15 ×1
java-stream ×1
list ×1
maven ×1
netbeans ×1
performance ×1
react-hooks ×1
react-table ×1
reactjs ×1
rendering ×1
use-effect ×1
vtl ×1