1

キーを文字列として、値をリストとして持つマップがあります。これをブロードリーフの管理ページに表示したいと思います。

protected Map<String, List<SkuStoneDetails>> skuStoneDetails = new HashMap<String, List<SkuStoneDetails>>();

以前は、以下のようにキーを文字列として、値をオブジェクトとしてマップしていました。

    protected Map<String, SkuStoneDetails> skuStoneDetails = new HashMap<String,<SkuStoneDetails>();

そのために、私は以下のような管理者向けプレゼンテーションを提供しました。

    @AdminPresentationMap(friendlyName = "Sku StoneDetails",
    tab = ProductImpl.Presentation.Tab.Name.Stone_Details, tabOrder = ProductImpl.Presentation.Tab.Order.SkuStoneDetails,
        //tab = Presentation.Tab.Name.Advanced, tabOrder = Presentation.Tab.Order.Advanced,
        //group = ProductImpl.Presentation.Group.Name.RPPrice, groupOrder = ProductImpl.Presentation.Group.Order.RPPrice,
    keyPropertyFriendlyName = "Sku StoneDetails Key",
    deleteEntityUponRemove = true,
    mediaField = "stoneType",
    forceFreeFormKeys = true
)

マップ内のリストとして値を使用してこれを行う方法がわかりません。親切に助けてください。

4

1 に答える 1

2

値のリストを持つマップを持つことは、@AdminPresentationMap を介して Broadleaf で現在サポートされているものではありません。https://github.com/BroadleafCommerce/BroadleafCommerce/issuesで、新しい機能のリクエストを自由に開いてください。

以前と同じように行うのが最善の策だと思います。または、次のようなこともできます。

public class SkuStone {
    @Column(name = "KEY")
    @AdminPresentation(friendlyNmae = "Sku StoneDetails Key")
    protected String key

    @OneToMany
    @AdminPresentationCollection(friendlyName = "Sku Stone Details")
    protected List<SkuStoneDetails> details = new ArrayList<SkuStoneDetails>();
}

そして、代わりにprotected Map<String, List<SkuStoneDetails>> skuStoneDetails = new HashMap<String, List<SkuStoneDetails>>();

@AdminPresentationCollection()
protected List<SkuStone> stones = new ArrayList<SkuStone>();
于 2015-01-08T07:56:37.113 に答える