我使用 vuejs-axios 从客户端获取数据并将其发布到服务器端。在服务器端,我使用了 java,而我使用 SparkJAVA 框架来处理请求响应。 下面提到的代码块是我用来将表单数据从 vuejs 发布到 java 的代码。
const formData = new FormData();
formData.append("name", this.name);
formData.append("address", this.address);
console.log(formData);
axios
.post("http://localhost:1234/formData", formData)
.then(response => {
console.log(response);
})
.catch(err => {
console.log(err);
});
下面提到的代码用于解析从vuejs获取的FormData。
public static void main(String[] args) {
Spark.port(1234);
Main.apply();
get("/", (req, res) -> {
return new ModelAndView(null, "StartPage.ftl");
}, new FreeMarkerEngine());
post("/formData", (req, res) -> {
return FormController.showFormData(req, res);
});
}
public class FormController {
public static Logger logger = LogManager.getLogger(FormController.class);
public static String showFormData(Request req, Response res) {
System.out.println("Data body: " + req.body());
System.out.println("Name: " + req.queryParams("name"));
System.out.println("Address: " + req.queryParams("address"));
return "Well Done!!!";
}
}
下面提到的是输出:
Content-Disposition: form-data; name="name"
Daniel
------WebKitFormBoundarydSA5AgIIhlMNCqA2
Content-Disposition: form-data; name="address"
New York
------WebKitFormBoundarydSA5AgIIhlMNCqA2--
Name: null
Address: null
我在 req.body() 中收到响应,但在 req.queryParams() 中没有收到响应。为什么? 而且 req.body() 的响应看起来有点不寻常。
最佳答案
那是因为 req.queryParams
用于获取 URL 参数。示例:http://localhost:1234/formData?name=Bruno&address=earth 。尝试使用 official documentation of Spark Java 中的这个示例。在这里,它教您如何从多部分中获取文件。进行一些更改后可能会起作用。
关于java - Request-Body(req.body) 显示值,但 Request-QueryParams(req.queryParams) 显示空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57584926/