2016-03-31 8 views
0

Görünümler için Thymeleaf'ı kullanan bir Spring MVC uygulamasında çalışıyorum ve bir AJAX isteğiyle bazı dizeleri gönderdiğimde aşağıdaki problemi yaşıyorum (Thymeleaf veya başka bir şeyden kaynaklanıp kaynaklanmadığını bilmiyorum). SonraNeden "è" karakterini bir AJAX GET Request üzerinden bir Spring MVC denetleyici yönteminin bir giriş parametresine gönderdiğimde, neden yanlış oluyor?

<div class="form-group" style="margin-left: 10%; margin-right: 10%; text-align: center;"> 
    <label for="notaCorrente">Inserire una nuova nota negli appunti:</label> 
    <textarea id="notaCorrente" class="form-control" rows="5"></textarea> 
</div> 

<button type="button" class="btn btn-default" data-dismiss="modal" onclick="aggiungiAppunti()">Salva</button> 

Ben GET AJAX isteği gerçekleştirmek denetleyiciye takılı veri göndermek bir JavaScript işlevi vardır:

Yani, benim görünüme ben kullanıcı bir metin gir hangi bu TextArea etiketine sahip :

function aggiungiAppunti() { 
    console.log("INTO aggiungiAppunti()"); 
    //alert("INTO aggiungiAppunti()"); 

    var testoNotaCorrente = $('#notaCorrente').val(); 

    alert("NOTA CORRENTE: " + testoNotaCorrente); 

    var message = 'Sei sicuro di voler salvare questi appunti?'; 

    mostraConferma(message, function(){ 
     $.ajax({ 
      type : "GET", 
      url : "aggiungiAppunti", 
      data : { 
       'testoNotaCorrente': testoNotaCorrente 
      }, 
      contentType:"application/json" 
     }).done(function(principal) { 
      replaceFragment($('#situazioniDocumentali'),principal); 
      inizializzazioneGestioneValidazione(); 
     }).error(function(error) { 
      showErrorMessage("errore"); 
     }); 
    }); 

} 

Ve sonunda bu AJAX isteği işlemek bu denetleyici yöntemi vardır:

@RequestMapping(value = "/aggiungiAppunti", method = RequestMethod.GET) 
public String aggiungiAppunti(HttpServletRequest request, Model model, Locale locale, @RequestParam("testoNotaCorrente") String testoNotaCorrente) throws Exception { 
    System.out.println("INTO aggiungiAppunti(), testo nota corrente: " + testoNotaCorrente); 

    ..................................................................... 
    .....................................................................  
    DO SOMETHING 
    .....................................................................  
    .....................................................................    

    return "gestioneValidazione/gestioneValidazione :: situazioniDocumentali"; 
} 

Bu yöntem, @RequestParam ("testoNotaCorrente") dizesini temsil eder. String testoNotaCorrente giriş parametresini temsil eder.

Bazı metin karakterlerinde bunun dışında iyi çalışır.

bu bir â olarak değil gibi (testoNotaCorrente girdi parametresi olarak) alınan AJAX Talebi yoluyla kontrol yöntemine gönderildi, edilir, örneğin kullanıcı, metin kutusu è karakteri eklemek Orijinal karakter olarak (diğer karakterler için de benzer davranışlar gösterir).

Bu davranışı neden aldım? Veriler trasmission edildiğinde bazı karakter kümesi sorunlarının olduğunu düşünüyorum, ancak sorunun ne olduğunu anlayamıyorum. Neyi yanlış anladım? Bu sorunu çözmeye nasıl çalışabilirim?

contentType: "application/json;charset=UTF-8" 

Ya kodunuzda: AJAX çağrısı ile utf-8 kodlama için

cevap

0

Güncelleme Eklediğim

function aggiungiAppunti() { 
    console.log("INTO aggiungiAppunti()"); 
    //alert("INTO aggiungiAppunti()"); 

    var testoNotaCorrente = $('#notaCorrente').val(); 

    alert("NOTA CORRENTE: " + testoNotaCorrente); 

    var message = 'Sei sicuro di voler salvare questi appunti?'; 

    mostraConferma(message, function(){ 
     $.ajax({ 
      type : "GET", 
      url : "aggiungiAppunti", 
      data : { 
       'testoNotaCorrente': testoNotaCorrente 
      }, 
      contentType:"application/json;charset=UTF-8" 
     }).done(function(principal) { 
      replaceFragment($('#situazioniDocumentali'),principal); 
      inizializzazioneGestioneValidazione(); 
     }).error(function(error) { 
      showErrorMessage("errore"); 
     }); 
    }); 

} 
+0

charset = UTF-8 AJAX çağrısı o contentType tanımı ama yine de her zaman aynı sonucu elde ediyorum. Denetleyici metodumun giriş parametresi olarak kodlandığında değer yanlıştır. – AndreaNobili

+0

ajax isteği ile tarayıcı neyin yollandığını kontrol edin. – user987339

İlgili konular