Java 如何在spring中从RESTURL获取包含点(.)的参数

Java 如何在spring中从RESTURL获取包含点(.)的参数,java,spring,hibernate,rest,spring-mvc,Java,Spring,Hibernate,Rest,Spring Mvc,我正在使用SpringREST和hibernate创建一个web应用程序。在这里,我使用来自url的唯一用户名从数据库中获取记录。 但问题是,如果我写的是简单的字符串,那么它工作得很好,但当我在用户名中写点(.)时,数据库就不会有结果了 例如 http://localhost:8080/WhoToSubscribe/subscribe/anshul007 但是当我使用这个url时 http://localhost:8080/WhoToSubscribe/subscribe/nadeem.ahm

我正在使用SpringREST和hibernate创建一个web应用程序。在这里,我使用来自url的唯一用户名从数据库中获取记录。 但问题是,如果我写的是简单的字符串,那么它工作得很好,但当我在用户名中写点(.)时,数据库就不会有结果了

例如

http://localhost:8080/WhoToSubscribe/subscribe/anshul007
但是当我使用这个url时

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;
}
@RequestMapping(value=“/{uname}”,method=RequestMethod.GET)
公共@ResponseBody
列表getSubscriber(@PathVariable(“uname”)字符串uname){
List pro=null;
试一试{
pro=subscribeService.getProfessionById(uname);
}捕获(例外e){
e、 printStackTrace();
}
return-pro;
}
这是我的

@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();
}
@SuppressWarnings(“未选中”)
公共列表getProfessionById(字符串uname)引发异常{
session=sessionFactory.openSession();
session.beginTransaction();
字符串queryString=“from Profession,其中username=:uname”;
Query=session.createQuery(queryString);
query.setString(“uname”,uname);
//List queryResult=(List)query.uniqueResult();
session.getTransaction().commit();
返回query.list();
}

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


或者在
/somepath/{variable}/

的末尾添加一条斜线,作为@Jkikes answer的替代选项,您通常可以通过以下方式改变此行为:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

}

现在你可以在任何地方使用圆点:D

你使用的是哪个春季版本?可能是OK的副本…但我无法理解这个问题它与你面临的同一个问题有关Kay。。。但我现在在下面的答案中找到了解决方案:)我尝试了,但出现了一个异常“'DefaultInlineConstraintResolver'类型的内联约束解析程序无法解析以下内联约束:'.+'”