java - Spring @ModelAttribute 将格式化数字转换为 Double

标签 java spring modelandview

//Entity
public class MyEntity {
  private Double amount;
  public Double getAmount() { return this.amount; }
  public void setAmount(Double value) { this.amount = value; }
}

//Controller
@RequestMapping(value="/save")
public void save(MyEntity a) {
   //save to db
}

//
<input name="amount" value="1,252.00" />

当我登顶时,它一直返回400 - Bad Request..我发现这是因为spring无法将格式化数字转换为Double。如何在设置为MyEntity

之前转换请求

最佳答案

我实现了扩展CustomNumberEditor的转换类

public class MyCustomNumberEditor extends CustomNumberEditor {
   public void MyCustomNumberEditor(Class numberClass, boolean allowEmpty) {
      this.numberClass = numberClass;
      this.allowEmpty = allowEmpty;
   }

   @Override
   public void setAsText(String text) throws IllegalArgumentException {
      if (this.allowEmpty && !StringUtils.hasText(text)) {
      // Treat empty String as null value.
      setValue(null);
      }
      else {
         try {
            setValue(Convert.to(this.numberClass, text));
         }
         catch (Exception ex) {
            throw new IllegalArgumentException("Could not parse date: " + ex.getMessage(), ex);
         }
      }
   }
}

并将它们插入 Controller

@InitBinder
public void initDataBinder(WebDataBinder binder) {
   binder.registerCustomEditor(Double.class, new MyCustomNumberEditor(Double.class));
}

关于java - Spring @ModelAttribute 将格式化数字转换为 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757623/

相关文章:

java - 出现错误 404 源服务器未找到目标资源的当前表示或不愿意透露该表示存在

java spring 在第一次请求时填充表单的值

java - MVC Spring模型-动态访问属性列表索引

spring - "return new ModelAndView("重定向 :surveys. html 有什么区别") ;"and "返回新的 ModelAndView ("surveys.html");"

java - 如何从 HttpServletRequest getParameter 记录 CharConversionException

java - 并非所有的 junit 测试都在 eclipse 中运行

Java 线程 JavaDoc

java - 从 Arraylist 中提取不同字符串的更快方法

java - Spring Jaxb2RootElementHttpMessageConverter 不使用 jaxb 注释

java - 使用 spring boot 设置 Redis sentinel