好的伙计我有这个问题,如果我直接使用表单提交它工作正常但最近我不得不对webapp进行一些升级,现在我真的卡住了因为我在标题中解释的内容。 / p>
我有这个jquery函数
<script type="text/javascript">
$(document).ready(function() {
var contextroot = "/Progetto/"
$(".dati").on('submit', function(e) {
var form = $(".dati");
var action = form.attr("action");
if (action == "restAddStudent") {
e.preventDefault();
var data = form.serializeArray();
$.ajax({
url : contextroot + action,
dataType : 'json',
type : 'POST',
contentType : 'application/json',
data : JSON.stringify(getFormData(data)),
error : function(jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}
});
});
function getFormData(data) {
var unindexed_array = data;
var indexed_array = {};
$.map(unindexed_array, function(n, i) {
indexed_array[n['name']] = n['value'];
});
return indexed_array;
}
</script>
将我的数据提交给RestController,直到这一点它工作正常。 当我的restController应该给我json回来时,问题出现了,实际上页面没有返回任何json文件。
@RequestMapping(value = "/restAddStudent", produces = "application/json")
private Confirmation addStudent(@RequestBody AddStudent addStud) {
Confirmation result = new Confirmation();
try {
String nome = addStud.getNome();
String cognome = addStud.getCognome();
long classe = addStud.getClasse();
Long c = classe;
logger.debug(
String.format("Inizio operazione aggiunta studente [Nome: %s], [Cognome : %s], [ID classe : %d]",
nome, cognome, classe));
StudListDTO studListDTO = new StudListDTO();
ClassiDTO classDTO = new ClassiDTO();
classDTO.setID(classe);
studListDTO.setCognome(cognome);
studListDTO.setNomeS(nome);
studListDTO.setClasse(classDTO);
if (nome != null && cognome != null && c != null) {
ss.aggiungiStud(studListDTO);
} else {
result.setMessage("Non è stato possibile inserire l'utente in quanto sono stati lasciati dei campi in bianco");
result.setStatus("WARN");
logger.error("I campi nome o cognome sono vuoti! Impossibile aggiungere lo studente");
}
} catch (Exception e) {
logger.error("Non è stato possibile inserire lo studente", e);
result.setMessage("Non è stato possibile inserire lo studente");
result.setStatus("WARN");
} finally {
logger.debug("Fine operazione aggiunta studente");
}
return result;
}
此方法应该返回这样的内容:return sample 但是,它现在没有向我显示任何内容。
答案 0 :(得分:0)
您的控制器方法看起来很奇怪..
您正在返回确认,但似乎只有在出现问题时才会设置。你确定要归还正确的物体吗?
此外,您的控制器应该是公开的而不是私人的。
并删除产生=&#34; application / json&#34;并使用MediaType.Application.JSON代替