2013-04-09 1 views
4

Мне нужно установить некоторые свойства JavaBean. У меня есть общий Map<String, String>, где первая строка является . Имя свойства, а второе представляет его значение.Как установить свойство (т. Е. Через BeanUtils), не зная его типа

Теперь, если карта выглядит следующим образом:

"greeting" : "Hello" 
"cool" : "true" 
"amount" : "42" 

и мои сеттеры в боба выглядеть следующим образом:

public void setGreeting(String greeting); 
public void setCool(boolean cool); 
public void setAmount(int amount); 

мне нужно, чтобы установить эти свойства в общем, как:

BeanUtils.setProperty(myBean, "amount", myMap.get("amount")); 

, так что BeanUtils находит правильный метод для использования и преобразования строки в нужный тип. В большинстве случаев в документе API он говорит «Нет преобразования типов», но я нашел много конвертеров в документе API, поэтому я предполагаю, что должен быть способ сделать это.

Как я могу позволить BeanUtils найти правильный метод, не зная его тип?

+0

Пробовали ли вы его? Похоже, что существует преобразование типов http://commons.apache.org/proper/commons-beanutils/api/index.html – BobTheBuilder

ответ

1

The javadoc говорит:

Установить заданное значение свойства, выполняя преобразования типов должны соответствовать типу имущества назначения.

Поэтому он должен автоматически конвертировать ваши значения.

+0

Хорошо спасибо ... Я действительно нашел это предложение в документации, но как-то я прочитал «Выполнение типов преобразований ** требуется **, чтобы соответствовать ... "всего лишь один символ, который полностью инвертирует значение .. – Chris

1

Согласно документации класса ConvertUtilsBean, типы, которые вы можете конвертировать из String или String[] к типу назначения автоматически являются:

  • java.lang.BigDecimal (значение по умолчанию не)
  • java.lang.BigInteger (значение не по умолчанию)
  • boolean and java.lang.Boolean (по умолчанию ложь)
  • byte and java.lang.Byte (по умолчанию к нулю)
  • char and java.lang.Character (по умолчанию пробел)
  • java.lang.Class (значение по умолчанию не)
  • double and java.lang.Double (по умолчанию нулю)
  • float and java.lang.Float (по умолчанию к нулю)
  • int and java.lang.Integer (по умолчанию нулю)
  • long and java.lang.Long (по умолчанию - 0)
  • short and java.lang.Short (по умолчанию - 0)
  • java.lang.String (по умолчанию нуль)
  • java.io.File (значение по умолчанию не)
  • java.net.URL (значение по умолчанию не)
  • java.sql.Date (значение по умолчанию не)
  • java.sql.Time (значение по умолчанию не)
  • java.sql.Timestamp (значение по умолчанию не)

Вы можете найти хороший пример в Convert Utils Demo, если вам нужен другой конвертер или заменить кого-то.