У меня проблема. Дело в том, что @Reponsebody возвращает HTML DOM, но я этого не хочу. Но если я удалю тело ответа, он вернет ошибку в контроллере. Вот контроллер:
@GetMapping(value = "/isvoted")
public @ResponseBody List<Boolean> isvoted() {
Authentication auth= SecurityContextHolder.getContext().getAuthentication();
UserDetails userDetails = (UserDetails)auth.getPrincipal();
Usuario usuario = (Usuario)usuarioService.findByUsername(userDetails.getUsername());
Long id = usuario.getId();
List<Tapas> tapas = tapaService.findAllTapas();
List<Boolean> listavotos = new ArrayList<Boolean>();
for (Tapas tapa : tapas) {
if (voteService.selectVoteByUserAndTapa(id, tapa.getId()) != null) {
listavotos.add(true);
}else {
listavotos.add(false);
}
}
return listavotos;
Итак, метод возвращает список логических значений и ajax получает ответ, но ответ также возвращает тело html, как я могу реализовать для возврата только listavotos (список логических значений) без включения тела HTML.
это мой ajax запрос на получение:
const full = $('input[name="voto"]').attr("value", "\uf004").css({"font-family": "'Font Awesome 5 Free'"});
$.ajax({
type: "GET",
url: "/isvoted",
success: function(result) {
if (result === undefined || result.length == 0){
console.log("no hay votos");
}else{
for (var voto of result) {
if(voto === true){
console.log("voto true");
full.css({"font-weight": "900"});
}else{
console.log("voto false");
full.css({"font-weight": ''});
}
}
}
},
error: function(result) {
console.log("error");
}
});
Возобновить, когда документ будет готов , он называется запросом получения ajax для kwnowing, если есть голоса, если есть голоса, он возвращает список логических значений (ответ), который он получает от контроллера, за который проголосовали, но также возвращает тело ответа (тело html ), но я не хочу этого. Я хочу, чтобы контроллер возвращал список в kwnow только в том случае, если элемент, за который он проголосовал, и если он проголосовал за стиль css, если не проголосовал, за другой стиль. Очень благодарен за вашу помощь. Если вам нужна дополнительная информация, только что опубликованная, и я поясню.
полный контроллер (не является restcontroller):
@Controller
publi c class VoteController {
@Autowired
private IVoteService voteService;
@Autowired
private IUsuarioService usuarioService;
@Autowired
private ITapasService tapaService;
private final Logger log = LoggerFactory.getLogger(getClass());
@GetMapping(value = "/isvoted")
@ResponseBody
public List<Boolean> isvoted(@RequestBody List<Boolean> listavotos) {
Authentication auth= SecurityContextHolder.getContext().getAuthentication();
UserDetails userDetails = (UserDetails)auth.getPrincipal();
Usuario usuario = (Usuario)usuarioService.findByUsername(userDetails.getUsername());
Long id = usuario.getId();
List<Tapas> tapas = tapaService.findAllTapas();
listavotos = new ArrayList<Boolean>();
for (Tapas tapa : tapas) {
if (voteService.selectVoteByUserAndTapa(id, tapa.getId()) != null) {
listavotos.add(true);
}else {
listavotos.add(false);
}
}
return listavotos;
}
@PostMapping(value = "/votecreate")
public String guardar(@Valid Vote vote, BindingResult result, Model model,
@RequestParam(name = "tapa", required = true) Tapas tapa,
RedirectAttributes flash, SessionStatus status) {
if (result.hasErrors()) {
List<ObjectError> errors = result.getAllErrors();
for(ObjectError error : errors) {
System.out.println("This is the error: " +error);
}
return "redirect:/home";
}
//String mensajeFlash = (vote.getId() != null) ? "voto quitado con con exito" : "votado con exito!";
Authentication auth= SecurityContextHolder.getContext().getAuthentication();
UserDetails userDetails = (UserDetails)auth.getPrincipal();
Usuario usuario = (Usuario)usuarioService.findByUsername(userDetails.getUsername());
//Tapas tapa = tapaService.findTapaById(Long.parseLong(tapaid));
vote.setTapa(tapa);
vote.setUsuario(usuario);
voteService.save(vote);
status.setComplete();
//flash.addFlashAttribute("success", mensajeFlash);
return "redirect:/home";
}
@GetMapping(value = "/votedelete/{tapaId}")
public String eliminar(@PathVariable(value = "tapaId") Long tapaId, RedirectAttributes flash) {
//Tapas tapa = tapaService.findTapaById(tapaId);
Authentication auth= SecurityContextHolder.getContext().getAuthentication();
UserDetails userDetails = (UserDetails)auth.getPrincipal();
Usuario usuario = (Usuario)usuarioService.findByUsername(userDetails.getUsername());
Long userId = usuario.getId();
log.debug("Usuario id:", userId);
if (userId != null && tapaId != null) {
Vote vote = voteService.selectVoteByUserAndTapa(userId, tapaId);
log.debug("vote:", vote.getId());
voteService.delete(vote.getId());
flash.addFlashAttribute("success", "Voto eliminado con exito");
return "redirect:/home/";
}
flash.addFlashAttribute("error", "El bar no existe en la base de datos");
return "redirect:/bares/";
}
}