【问题标题】:How to get parameter which is containing dot(.) from rest url in spring如何在spring中从rest url获取包含点(。)的参数
【发布时间】:2015-10-30 20:26:52
【问题描述】:

我正在使用 Spring REST 和休眠创建一个 Web 应用程序。在这里,我使用来自 url 的唯一用户名从数据库中获取记录。 但问题是,如果我正在编写简单的字符串,那么它工作正常,但是当在用户名中我正在编写 dot(.) 时,没有来自数据库的结果。

例如

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();
}

【问题讨论】:

  • 你使用的是哪个春季版本?
  • 好的...但我无法理解这个问题
  • 和你遇到的同样的问题有关
  • 好的...但是我现在在下面的答案中得到了解决方案:)

标签: java spring hibernate rest spring-mvc


【解决方案1】:

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

或在末尾添加一个斜线/somepath/{variable}/

【讨论】:

  • 我试过但我有一个异常“'DefaultInlineConstraintResolver'类型的内联约束解析器无法解析以下内联约束:'.+'。 "
【解决方案2】:

作为@Jkikes 的替代答案,您通常可以将这种行为转变为:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2014-03-16
    • 1970-01-01
    相关资源
    最近更新 更多