Tôi đã cố gắng làm việc với các lựa chọn nhóm với một cái gì đó như thế này:JSF 2: Lựa chọn nhóm với SelectItemGroup + POJO
<h:selectOneMenu value="#{selectionLabBean.oneSelectMenuGroup}"
id="SelectOneMenuGroup" >
<f:selectItems value="#{selectionLabBean.heroGroupList}" />
</h:selectOneMenu>
<p:message for="SelectOneMenuGroup" />
nơi heroGroupList là một cái gì đó như thế này:
SelectItem[] heroArr = new SelectItem[] {
new SelectItem("Paladin"),
...
};
heroListWithGrouping.add(
new SelectItemGroup("Human",
"A collection of human race Heroes",
false,
heroArr
)
);
.....
Và i' m trái tự hỏi nếu tôi có thể làm loại nhóm với POJOs thay vì các đối tượng SelectItem?
Nếu tôi không thể đạt được điều này, tôi nghĩ rằng tôi phải bằng cách nào đó chuyển đổi các đối tượng miền của tôi hoặc kết quả truy vấn của tôi thành mảng của SelectItem để làm cho nó hoạt động.
Bất kỳ ý tưởng nào?
Vì vậy, kết luận là: để sử dụng lựa chọn nhóm, chúng ta phải chuyển đổi POJO thành Danh sách. Nhưng chúng ta vẫn có thể sử dụng POJO làm itemValue với bộ chuyển đổi. Coooool! Cảm ơn bạn BalusC. –
bertie
Tôi đã thử ràng buộc nó vào loại Hero, nhưng nó thất bại với lỗi: SelectOneMenuGroup: Validation Error: Giá trị không hợp lệ, điều này thật lạ, vì tôi không sử dụng bất kỳ xác nhận nào cả. .. Và tại managedbean, liên kết là: private HeroBean oneSelectMenuGroupPojo; Tôi gỡ lỗi nó và phát hiện ra các proggie doesnt đặt giá trị ràng buộc. Tôi đã thử var = "hero" itemValue = "# {hero}" itemLabel = "# {hero.name}", nhưng cũng thất bại. –
bertie
Điều này có thể xảy ra bất cứ khi nào mục được chọn không khớp với bất kỳ mục nào trong danh sách theo phương thức 'equals()'. Có khả năng phương thức 'equals()' không được triển khai hoặc thực hiện kém. – BalusC