3

私は文字列の2つのマップを使用しています。

  Map<String, String> offices;
  Map<String, String> services;

1 つのマップには「オフィス」が含まれ、1 つのマップには「提供されるサービス」が含まれます。新しいオフィスやサービスが追加または削除される可能性があるため、これらはそれぞれ動的です。私の問題は、どのオフィスが各サービスをサポートしているかをうまく説明する方法と、最終的にはそれを捉える方法です。

これは私がそれをどのように見せたいかです:

ここに画像の説明を入力

私の最初の問題は、PrimeFaces または JSF バニラを使用してこれを表現する方法を理解できないことです。私は DataTable のようなさまざまなものを見てきましたが、それらはすべて、必要な列見出しと行見出しの両方ではなく、単一の「見出し」を示しているようです。または、データを複雑に表示する方法を示し、すべてが単一のリストまたはマップから取得されます。収束する 2 つのマップを説明する必要があります。2 つのマップを 1 つの中間リストに結合する必要があると思いますが、具体的には手探りです。

私の 2 番目の問題は、戻ってくるブール値をどのようにキャプチャするかということです。インデックスをキャプチャする必要があると考えていますが、その詳細は私をほのめかしています。

編集: コードと説明:

  private Map<String, String> offices;

  public Map<String, String> getOffices() {
  return offices;
  }

//constructor
offices.put("PV001", "Pleasantville");
offices.put("GV001", "Green Valley");

次に、JSF / XHTML マークアップで:

<p:selectManyCheckbox>
    <f:selectItems value="#{myOffices.offices.entrySet()}"
        var="entry" itemLabel="#{entry.value}" itemValue="#{entry.key}" />
</p:selectManyCheckbox>

では、どうすればそのように 2 つのマップをクロスし、関連するチェック マークを取得できるでしょうか。通常は、bodyWork、paint、oilChange プロパティを持つオフィス クラスを作成するだけですが、残念ながら、これらの数を動的に調整できるようにする必要があるため、Map を使用しています。

4

1 に答える 1