如何从Spring中的rest url获取包含点(。)的参数

时间:2015-08-07 11:44:28

标签: java spring hibernate rest spring-mvc

我正在使用Spring REST和hibernate创建一个Web应用程序。这里我使用来自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();
}

2 个答案:

答案 0 :(得分:24)

将您的映射更改为/somepath/{variable:.+}

或在末尾添加斜杠/somepath/{variable}/

答案 1 :(得分:1)

作为@Jkikes回答的替代方案,您通常可以通过以下方式解决此问题:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

}

现在你可以到处使用点:D