2009-06-08 39 views
5

Tôi gặp lỗi ở dòng thứ tư ghi: cvc-complex-type.2.4.d: Tìm thấy nội dung không hợp lệ bắt đầu bằng phần tử 'map'. Không có yếu tố con nào được mong đợi vào thời điểm này.Java: Spring Framework: Khai báo Bản đồ lồng nhau

<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> 

Mọi đề xuất?

Trả lời

10

Đối với các loại giá trị phức tạp, không lồng phần tử bản đồ, thay vào đó sử dụng thuộc tính value-ref. Theo mặc định, value yếu tố chỉ chấp nhận giá trị String.

Thuộc tính có thể là chuỗi hoặc có thể được chuyển đổi thành loại được yêu cầu bằng cách sử dụng máy móc JavaBeans PropertyEditor. Điều này làm cho các nhà phát triển ứng dụng có thể viết các triển khai PropertyEditor tùy chỉnh có thể chuyển đổi các chuỗi thành các đối tượng đích tùy ý.

Lưu ý rằng điều này chỉ được khuyến nghị cho các đối tượng đơn giản. Cấu hình các đối tượng phức tạp hơn bằng cách điền các thuộc tính JavaBean với các tham chiếu tới các bean khác.

Dữ liệu của bạn sẽ giống như thế:

<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
<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> 
+0

Không thể. Giá trị sẽ giống nhau khi thực sự cho tất cả các mục map2. –

Các vấn đề liên quan