In the case of a multi-valued enumeration attribute like
otherAvailableLanguages or publicationForms, the
Retrieve/List All view must show a
value in the form of a comma-separated list, like "English, German, Spanish", as shown in the
following table:
| ISBN | Title | Year | Orig. lang. | Other avail. lang. | Category | Publication forms |
|---|---|---|---|---|---|---|
| 006251587X | Weaving the Web | 2000 | English | German, French | textbook | pdf, hardcover |
| 0465026567 | Gödel, Escher, Bach | 1999 | French | other | paperback, epub | |
| 0465030793 | I Am A Strange Loop | 2008 | Spanish | English, German | textbook | pdf, epub |
For this purpose, we define a method that creates the desired
serialization of a multi-valued attribute and use it in the code of the
facelet file retrieveAndListAll.xhtml from
WebContent/views/books/. For the
publicationForms attribute, the method code is as
follows:
public String getPublicationFormsValues() {
String result = "";
if (this.publicationForms != null) {
int i=0, n = this.publicationForms.size();
for (PublicationFormEL pf : this.publicationForms) {
result += pf.name().toLowerCase();
if (i < n-1) result += ", ";
i++;
}
}
return result;
}Notice that in the case of the publicationForms
attribute, the underlying enumeration PublicationFormEL does
not have a label property. Instead, we use the enumeration literal name in
lowercase as the label.