2015-08-07 7 views
8

Sto creando un'applicazione Web utilizzando Spring REST e hibernate. Qui sto recuperando record dal database utilizzando un nome utente univoco proveniente dall'URL. Ma il problema è che se sto scrivendo una semplice stringa, allora funziona bene, ma quando in username sto scrivendo punto (.) Quindi nessun risultato proviene dal database.Come ottenere il parametro che contiene il punto (.) Dall'URL di riposo in primavera

Per es.

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

ma quando sto usando questo URL

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

non funziona perché è contenente punto (.)

Ecco il mio controller

@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; 
} 

Ecco il mio DAO classe

@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 quale versione primavera sei? –

+0

possibile duplicato di http://stackoverflow.com/questions/16332092/spring-mvc-pathvariable-with-dot-is-getting-runcated –

+0

version spring 4 – artle

risposta

13

cambiare la vostra mappatura per /somepath/{variable:.+}

o aggiungere uno slash alla fine /somepath/{variable}/

+0

il suo funzionamento ... grazie mille fratello :) – artle

+0

aggiungi una barra finale è la giusta via – Max

0

Come alternativ a @Jkikes rispondere si può generalmente trasformare questo comportamento con:

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

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

} 

Ora puoi usare i punti ovunque: D

Problemi correlati