这里我有AJAX脚本,我需要更正我的控制器
当我从表格中将数据发送到我的控制器时,我需要这样做,它不会刷新我的页面。
我的JSP页面上有一个<form>
而AJAX <script>
将我的数据从<textarea>
传输到控制器方法,但它刷新了我的页面。如何做到这一点我的POST方法将无需刷新页面?感谢名单!
<form:form method="POST" modelAttribute="message" action="/app/user/messages/${iddialog}"
accept-charset="utf-8" ng-app="vandh" ng-controller="validateCtrl"
name="messageForm" novalidation="true">
<form:textarea path="text" class="form-control" rows="1" name="message"
id="message" ng-model="message" required="true"></form:textarea>
<div style="color: black"
ng-show="messageForm.message.$dirty && messageForm.message.$invalid">
<span ng-show="messageForm.message.$error.required"><spring:message
code="label.entermessage" /></span>
</div>
<br>
<div class="text-center">
<button class="btn btn-success" id="addMessage" name="addMessage"><spring:message
code="label.sendmessage"/></button>
</div>
</form:form>
<script>
$("#addMessage").click(function() {
var text = $('#message').val();
$.ajax({
type : "POST",
url: "/app/user/messages/${iddialog}" ,
async : false,
data : {
text : text
}
});
});
</script>
这是我的POST方法的控制器方法。在这里,我正在检查我的消息并将其添加到数据库中。
public void sendMessage(int iddialog, String text, String messender) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// get current date time with Date()
Date date = new Date();
System.out.println(dateFormat.format(date));
Dialog dialog = new Dialog();
dialog.setIddialog(iddialog);
Message mess = new Message();
mess.setText(text);
mess.setDialog(dialog);
mess.setDate(dateFormat.format(date));
mess.setMessender(messender);
this.messageService.addMessage(mess);
this.dialogService.updateUnreadMessInfo(iddialog, messender);
}
public boolean checkingMessage(String text) {
if (text.contains("<") || text.contains(">") || text.contains("script") || text.contains("$")) {
return true;
} else
return false;
}
@RequestMapping(value = "/user/messages/{iddialog}", method = RequestMethod.POST)
public String messages(@ModelAttribute("message") Message message, @RequestParam(value = "text") String text,
@PathVariable(value = "iddialog") int iddialog, Model model, Principal principal) {
System.out.println("ITS HERE");
if (checkingMessage(text) != true) {
sendMessage(iddialog, text, principal.getName());
System.out.println("message sent!");
// return "redirect:/user/messages/"+iddialog;
return "messagesWithUser";
} else {
return "redirect:/user/messages";
}
}
答案 0 :(得分:0)
上面的例子当你按#addMessage按钮时,正在发生两件事
为避免重新加载,请将表单的操作更改为action="javascript:void(0);"
因此,您需要根据Ajax调用更改控制器,因为您使用Ajax发送该消息。