2015-08-07 15 views
8

Tworzę aplikację internetową przy użyciu Spring REST i hibernacji. Tutaj pobieram rekord z bazy danych przy użyciu unikalnej nazwy użytkownika pochodzącej z adresu URL. Ale problem polega na tym, że jeśli piszę prosty ciąg, to działa dobrze, ale kiedy w nazwie użytkownika piszę kropkę (.), Wtedy żaden wynik nie pochodzi z bazy danych.Jak uzyskać parametr zawierający kropkę (.) Z adresu url na wiosnę

Na przykład.

http://localhost:8080/WhoToSubscribe/subscribe/anshul007 

ale gdy używam tej url

http://localhost:8080/WhoToSubscribe/subscribe/nadeem.ahmad095 

to nie działa, ponieważ jest zawierająca kropkę (.)

Oto mój kontroler

@RequestMapping(value = "/{uname}", method = RequestMethod.GET) 
public @ResponseBody 
List<Profession> getSubscriber(@PathVariable("uname") String uname) { 

    List<Profession> pro = null; 

    try { 
     pro = subscribeService.getProfessionById(uname); 


    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return pro; 
} 

Oto mój DAO klasa

@SuppressWarnings("unchecked") 
public List<Profession> getProfessionById(String uname) throws Exception { 
session = sessionFactory.openSession(); 
    session.beginTransaction(); 
    String queryString = "from Profession where username = :uname"; 
    Query query = session.createQuery(queryString); 
    query.setString("uname", uname); 
    //List<Profession> queryResult = (List<Profession>) query.uniqueResult(); 
    session.getTransaction().commit(); 
    return query.list(); 
} 
+0

w w której wersji wiosną jesteś? –

+0

możliwy duplikat http://stackoverflow.com/questions/16332092/spring-mvc-pathvariable-with-dot-is-getting-nruncated –

+0

wersja wiosna 4 – artle

Odpowiedz

13

zmiana Twój mapowanie do /somepath/{variable:.+}

lub dodaj ukośnik na końcu /somepath/{variable}/

+0

jego działanie ... dziękuję bardzo bro :) – artle

+0

dodać ukośny slash jest właściwą drogą – Max

0

Jako alternatyw do @Jkikes odpowiedzieć można generalnie włączyć Takie zachowanie z:

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void configurePathMatch(PathMatchConfigurer configurer) { 
    configurer.setUseSuffixPatternMatch(false); 
    } 

} 

Teraz możesz używać kropek wszędzie: D

Powiązane problemy