“空轉換器”的轉換錯誤設置值-為什么我需要JSF中的轉換器?我在理解如何在JSF 2中有效地使用POJO/Entity時遇到了問題。例如,我試圖選擇一個Warehouse實體通過以下下拉列表:<h:selectOneMenu value="#{bean.selectedWarehouse}">
<f:selectItem itemLabel="Choose one .." itemValue="#{null}" />
<f:selectItems value="#{bean.availableWarehouses}" /></h:selectOneMenu>以及下面的托管bean:@Named@ViewScopedpublic class Bean {
private Warehouse selectedWarehouse;
private List<SelectItem> availableWarehouses;
// ...
@PostConstruct
public void init() {
// ...
availableWarehouses = new ArrayList<>();
for (Warehouse warehouse : warehouseService.listAll()) {
availableWarehouses.add(new SelectItem(warehouse, warehouse.getName()));
}
}
// ...}注意我用了整個Warehouse的價值SelectItem.當我提交表單時,以下Faces消息失?。恨D換錯誤設置值‘com.example.Warehouse@caebabe’空轉換器‘。我希望JSF能設置正確的Warehouse對象打包到托管bean中。SelectItem..將我的實體包裝在SelectItem應該跳過創建Converter為了我的實體。我真的需要用Converter每當我想使用<h:selectOneMenu>?對于JSF來說,只需從可用項列表中提取所選的項就可以了。如果我真的要用轉換器,實際的方法是什么?到目前為止,我想到的是:創建一個Converter實體的實施。覆蓋getAsString()..我想我不需要這個,因為SelectItem將用于顯示下拉選項標簽。覆蓋getAsObject()..我認為這將用于返回正確的SelectItem或實體,取決于在托管bean中定義的選定字段的類型。這個getAsObject()把我弄糊涂了。做這件事的有效方法是什么?具有字符串值時,如何獲得關聯的實體對象?應該根據字符串值從服務對象查詢實體對象并返回該實體嗎?或者也許我可以訪問組成選擇項的實體的列表,循環它們以找到正確的實體,并返回該實體?這樣做的正常方式是什么?
“空轉換器”的轉換錯誤設置值-為什么我需要JSF中的轉換器?
慕碼人8056858
2019-06-09 15:30:23