Chcę uzyskać dostęp do atrybutu modelu w JavaScript. Używam następujący kod:Jak uzyskać dostęp do atrybutu modelu w JavaScript
model.addAttribute("data", responseDTO);
Moja klasa DTO:
public class ResponseDTO {
private List<ObjectError> errors;
private Boolean actionPassed;
private String dataRequestName;
// and setter getter for all fields
}
Próbowałem dostępu do Dto używając:
var data = "${data}";
Ale to daje mi reprezentację ciąg responseDTO zamiast tj. [email protected]
. Mogę z powodzeniem dostępu do pola wewnątrz DTO używając:
var data = "${data.actionPassed}";
Ale to nie działa dla atrybutu wewnątrz DTO errors
, ponieważ jest to List
z ObjectError
. Jak mogę uzyskać kompletny obiekt responseDTO
w JavaScript?
Dzięki!
EDIT:
Początkowo używałem jquery.post
$.post('ajax/test.html', function(data) {
// Here I was able to retrieve every attribute even list of ObjectError.
});
Teraz chcę usunąć Ajax i chcą przekształcić go w non-ajax podejścia (z powodu pewnych nieuniknionych powodów) . Tak więc robię normalną formę i chcę ponownie załadować ten sam formularz i próbować wczytać atrybut modelu data
w JavaScript, aby zachować pozostałą część kodu w niezmienionej postaci.
Zastanawiam się, czy można to osiągnąć w JavaScript, jak to jest możliwe przy użyciu postu Jquery?
EDIT 2:
próbowałem (dziękuję @Grant sugestie)
JSONObject jsonObject =JSONObject.fromObject(responseDTO);
String jsonString = jsonObject.toString();
model.addAttribute("data",jsonString);
aw JavaScript
var data = eval('('+ ${dataJson} +')'); // Getting error on this line
alert(data.actionPassed);
Ale coraz błąd i nie jest alert wyświetlany
Błąd:
Gdzie chcesz uzyskać dostęp do obiektu, w pliku JSP lub po stronie klienta po zwróceniu DTO przez niektóre wywołania AJAX? – Ralph
Zanim przejdziesz dalej, zatrzymaj się i rozważ: twój model znajduje się na ** serwerze **, javascript dzieje się na ** kliencie **. Co chcesz osiągnąć? – pap
@Ralph: Nie Chcę usunąć część Ajax. Sprawdź moją edycję po więcej szczegółów. – xyz