2012-12-12 3 views
0

Я хочу зарегистрировать редактор пользовательских свойств для одного из свойств класса домена, класс что-то вроде этогоSpring/Grails редактора пользовательских свойств для конкретного свойства класса

class Accessory{ 
    String name 
    byte[] image 
} 

От клиента сторона я посылаю в кодировке base64 для изображения, теперь я хочу эту строку для автоматического преобразования в массив байтов в момент связывания

Мой класс редактор свойств выглядит следующим образом

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. Если да, то как указать путь собственности?

+0

'registerCustomEditor (byte [], 'image', new Custom ....)' должен регистрировать редактор для всех свойств с именем _image_ типа _byte [] _, но я не уверен, что есть какой-либо способ его ограничить к одному определенному классу. –

+0

Да, я знаю, что на самом деле это не путь собственности - «образ», в то время как привязка его говорит, не может найти изображение свойства в классе CustomAccessoryImageEditor. Было бы хорошо, если бы я мог ограничить это свойством с именем image –

ответ

2

Я не думаю, что у вас есть редактор свойств для определенного свойства класса. Но если свойство изображения имеет тип Image (обертка для байта []), вы можете зарегистрировать для него редактор, а Spring привяжет кодированное текстовое представление к пользовательской оболочке.

+0

спасибо за ответ dave, есть ли обходной путь для достижения этого? я не могу иметь обертку, также хочу знать, есть ли немного более подробная документация для этой привязки данных, документа springsource недостаточно. –

+0

PropertyEditor - стандартная функция JDK, поэтому Spring не документирует ее. Существуют альтернативы весной (см. Главу 6 или руководство пользователя http://static.springsource.org/spring/docs/current/spring-framework-reference/html/validation.html). Вероятно, вы можете использовать конвертер для строки в байт [] - тогда будет вопрос, будет ли в вашем случае его использовать в нужном месте. Мы не знаем достаточно о вашей заявке (и я недостаточно знаю о Grails), чтобы дать вам больше указаний, чем это. –

Смежные вопросы