用于类的特定属性的 Spring/Grails 自定义属性编辑器

标签 spring grails path editor custom-properties

我想为域类的属性之一注册一个自定义属性编辑器,该类是这样的

class Accessory{
  String name
  byte[] image
}

从客户端,我正在为图像发送一个 base64 编码的字符串,现在我希望这个字符串在绑定(bind)时自动转换为字节数组

我的属性编辑器类看起来像这样
import java.beans.PropertyEditorSupport
import org.apache.commons.codec.binary.Base64
class CustomAccessoryImageEditor extends PropertyEditorSupport{


    String getAsText() {
        value.toString()
    }

    void setAsText(String text) {
        String encodedImage = text?:""
        byte[] imageBytes = decodeImageToBytes(encodedImage)
        if(imageBytes.size()){
            value = imageBytes
        }


    }

    byte[] decodeImageToBytes(String encodedImage){
            return Base64.decodeBase64(encodedImage)
        }
}

我无法找到正确注册此编辑器的方法。

现在我的注册员类有这样的东西
registry.registerCustomEditor(byte, Accessory.image, new CustomAccessoryImageEditor())

但是当我运行它时,我收到一条错误消息,说找不到类附件上的属性图像

我有两个问题,
1. 是否可以为类的特定属性提供属性编辑器?
2.如果是,那么如何指定属性路径?

最佳答案

我认为不可能为类的特定属性提供属性编辑器。但是如果 image 属性是 Image 类型(byte[] 的包装器),那么您可以为此注册一个编辑器,Spring 会将编码的文本表示绑定(bind)到自定义包装器。

关于用于类的特定属性的 Spring/Grails 自定义属性编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836706/

相关文章:

java - hibernate 、Java 9 和 SystemException

java - 什么是 Spring JMS 中的 JmsTemplate 回调?

java - Redis 集群与 Spring Boot 集成

grails - 如何在Grails中记录交易事件

java - 如何使用 spring data、hibernate 为映射实体创建自定义查询?

mysql - Grails/MySQL 字段长度约束

mongodb - 每个子类的 Grails 继承 MongoDb 集合

c# - 获取 Silverlight 5 部署路径(在浏览器中以完全信任模式运行时)

java - 如何使用jar文件在另一个文件夹中运行java类

java - 遍历java中一条线/路径上的每个点