【发布时间】:2019-08-26 04:52:46
【问题描述】:
我试图在 javascript 文件中的 post 事件(方法函数存在于 spring 服务器端)之后测试一个变量。通常根据这个值,我会决定是否向其他用户发送通知。 首先,我检查订单号是否存在,如果存在,我将不会向用户发送通知,如果不存在,我会保存订单并向用户发送通知,告知最终用户提交了新订单。 这是我的 javascript 代码:
$('#btn-save').on('click', function (e) {
var test = document.getElementById("error").value ;
console.log("test =", test);
if (test == "test1") {
console.log("test1 =", test);
toastr.options = {
"closeButton": true,
"debug": false,
"newestOnTop": false,
"progressBar": false,
"positionClass": "toast-top-right",
"preventDuplicates": false,
"onclick": null,
"showDuration": "3300",
"hideDuration": "1000",
"timeOut": "0",
"extendedTimeOut": "0",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
}
toastr["error"]("error !!!!");
} else {
console.log("test =", test);
sendForm();
}
});
我通过弹簧控制器方法的变量测试,如下所示:
String test = "test";
@PostMapping("/saveordre")
public String formOrdre(Model model, @Validated OrdreAjout ordre1, @Validated OrdreSupp ordre2, String typeOrdre,
BindingResult bindingresult, @RequestParam("num_ord") String num_ord, Notif_A2 not_a2,
@RequestParam("Fichier1") MultipartFile file) {
String test_error = null;
String p = "0";
if (ordreRepository.findByNum(num_ord) != null) {
test = "test1";
test_error ="test1";
String size2 = null;
List<Notif_A2> notilist = noti_a2.listNotifA2();
long size = notilist.stream().count();
size2 = Long.toString(size);
model.addAttribute("size2", size2);
model.addAttribute("listnoti", notilist);
String size3 = null;
List<Notif_A3> notlist = noti_a3.listNotifA3();
long size1 = notlist.stream().count();
size3 = Long.toString(size1);
model.addAttribute("size3", size3);
model.addAttribute("note", notlist);
model.addAttribute("error4", test);
model.addAttribute("error3", test_error);
model.addAttribute("ordre", new Ordre());
return "/formordre";
}
else {
test = "test";
model.addAttribute("error4", test);
String filename = StringUtils.cleanPath(file.getOriginalFilename());
try (InputStream inputStream = file.getInputStream()) {
Files.copy(inputStream, Paths.get(UPLOADED, filename), StandardCopyOption.REPLACE_EXISTING);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
catch (IOException e) {
model.addAttribute("error1", e);
return "FormOrdre";
}
try {
if (typeOrdre.equals("OA")) {
ordreMetier.save(ordre1);
not_a2.setOrdre(ordre1);
not_a2.setFlag_stat_a2("0");
not_a2.setFlag_stat_a3("0");
not_a2.setTyp_noti("add");
noti_a2.save(not_a2);
}
else {
ordreMetier.save(ordre2);
not_a2.setOrdre(ordre2);
not_a2.setFlag_stat_a2("0");
not_a2.setFlag_stat_a3("0");
not_a2.setTyp_noti("add");
noti_a2.save(not_a2);
}
}
catch (Exception e) {
model.addAttribute("error", e);
return "FormOrdre";
}
String test2 = "test2";
model.addAttribute("success", test2);
model.addAttribute("ordre", new Ordre());
return "/formordre";
}
这个代码不能很好地工作,它在订单号存在时发送通知不正确并且在订单不存在时不发送通知。任何人都知道如何解决它!!!!!!
【问题讨论】:
-
通过首先检查服务是否返回来调试代码。
console.log("test =", test);的值是多少 -
没有出现在浏览器的控制台开发者工具中
-
你确定点击事件被触发了吗?在 `document.getElementById("error").value` 之前写一个日志,可能元素不存在并给出错误。控制台是否显示任何错误?
-
我使用 sockjs 和 stomp js 进行通知,这可能是控制台中没有出现 test 值的原因。 post事件没有错误。
标签: javascript spring spring-boot spring-data-jpa