Java: Spring Framework: объявление вложенных карт - PullRequest
5 голосов
/ 08 июня 2009

В 4-й строке я получаю сообщение об ошибке: cvc-complex-type.2.4.d: найдено недопустимое содержимое, начиная с элемента 'map'. На этом этапе не ожидается дочерний элемент.

  <util:map id="entirePayTypesMap">
            <entry key="34">
                <value>
                    <map>
                         <entry key="default">
                              <value>
                                 <map  key-type="java.lang.Boolean">
                                     <entry key="true" value="3T" />
                                     <entry key="false" value="3U" />
                                 </map> 
                              </value>
                         </entry>
                     </map> 
                </value>
            </entry>
    </util:map> 

Есть предложения?

Ответы [ 2 ]

10 голосов
/ 08 июня 2009

Для сложных типов значений не вкладывайте элемент карты, вместо этого используйте атрибуты value-ref. По умолчанию элементы value принимают только значения String.

Свойство может быть строкой или может быть преобразовано в требуемый тип с использованием механизма JavaBeans PropertyEditor. Это позволяет разработчикам приложений писать собственные реализации PropertyEditor, которые могут преобразовывать строки в произвольные целевые объекты.

Обратите внимание, что это рекомендуется только для простых объектов. Сконфигурируйте более сложные объекты, заполнив свойства JavaBean ссылками на другие bean-компоненты.

Ваши данные будут выглядеть примерно так:

<util:map id="mapA" key-type="java.lang.Boolean">
    <entry key="true" value="3T" />
    <entry key="false" value="3U" />
</util:map>
<util:map id="map1">
    <entry key="default" value-ref="mapA"/>
</util:map>

<util:map id="mapB" key-type="java.lang.Boolean">
    <entry key="true" value="4T" />
    <entry key="false" value="4U" />
</util:map>
<util:map id="map2">
    <entry key="default" value-ref="mapB"/>
</util:map>

<util:map id="entirePayTypesMap">
    <entry key="34" value-ref="map1"/>
    <entry key="35" value-ref="map2"/>
</util:map>
2 голосов
/ 08 июня 2009
<util:map id="map1" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.util.HashMap">

<entry key="" value-ref="map2">

</util:map>



<util:map id="map2" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.util.HashMap">

<entry key="" value-ref="map3">

</util:map>



<util:map id="map3" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.Boolean">

<entry key="" value="">

</util:map>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...