2015-08-07 2 views
8

Я создаю веб-приложение, используя Spring REST и hibernate. Здесь я извлекаю запись из базы данных, используя уникальное имя пользователя, которое поступает с URL-адреса. Но проблема в том, что если я пишу простую строку, тогда она работает нормально, но когда в имени пользователя я пишу точку (.), То результат не поступает из базы данных.Как получить параметр, содержащий точку (.) Из остального url весной

Для примера.

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

, но когда я использую этот адрес

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

он не работает, потому что она, содержащая точку (.)

Вот мой контроллер

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

Вот мой DAO класс

@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 в какой весенней версии вы? –

+0

Возможный дубликат http://stackoverflow.com/questions/16332092/spring-mvc-pathvariable-with-dot-is-getting-truncated –

+0

версия весна 4 – artle

ответ

13

изменить ваше отображение в /somepath/{variable:.+}

или добавить косую черту в конце /somepath/{variable}/

+0

его работа ... спасибо вам большое спасибо :) – artle

+0

Добавить трейлинг-косую в правильном направлении – Max

0

Как алтернатива @Jkikes ответ можно вообще превратить это поведение с:

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

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

} 

Теперь вы можете использовать точки везде: D

Смежные вопросы