代码之家  ›  专栏  ›  技术社区  ›  John

如何将字符绑定到文本字段?

  •  0
  • John  · 技术社区  · 7 年前

    我找到了一个如何将整数绑定到文本字段的示例:

    Binder<Person> b = new Binder<>();
    b.forField(ageField)
        .withNullRepresentation("")
        .withConverter(new StringToIntegerConverter("Must be valid integer !"))
        .withValidator(integer -> integer > 0, "Age must be positive")
        .bind(p -> p.getAge(), (p, i) -> p.setAge(i));
    

    问题是-没有StringToCharacterConverter,如果按原样绑定字段,则会出现错误。错误是:

    Property type 'java.lang.Character' doesn't match the field type 'java.lang.String'. Binding should be configured manually using converter.
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Tatu Lund    7 年前

    您需要实现自定义转换器,这里是非常简化的版本 StringToCharacterConverter 要得到它们的形状:

    public class StringToCharacterConverter implements Converter<String,Character> {
    
        @Override
        public Result<Character> convertToModel(String value, ValueContext context) {
            if (value == null) {
                return Result.ok(null);
            }
    
            value = value.trim();
    
            if (value.isEmpty()) {
                return Result.ok(null);
            } else if (value.length() == 1) {
                Character character = value.charAt(0);
                return Result.ok(character);
            } else {
                return Result.error("Error message here");
            }
        }
    
        @Override
        public String convertToPresentation(Character value, ValueContext context) {
            String string = value.toString();
            return string;
        }
    
    }