0
我在我的項目中使用Hibernate,Spring和JSF(Primefaces)。我想用簡單的POJO(實體)創建一個選項列表。以下是我創建:Primefaces選擇列表,轉換器失敗
<p:pickList id="pickList" converter="#{groupConverter}" value="#{adminUsersMB.groups}" var="group"
itemLabel="#{group.name}" itemValue="#{group}" >
<f:facet name="sourceCaption">Available groups</f:facet>
<f:facet name="targetCaption">Users groups</f:facet>
</p:pickList>
我Converter是:
@RequestScoped
@FacesConverter(forClass=Group.class, value="groupConverter")
public class GroupConverter implements Converter {
@ManagedProperty(name="groupService", value="#{groupService}")
@Getter @Setter
GroupService groupService;
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
try {
return groupService.getGroupByName(Integer.parseInt(arg2));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
return ((Group) arg2).getId().toString();
}
}
當然
我將我的自定義轉換到faces配置:
<converter>
<converter-id>groupConverter</converter-id>
<converter-class>pl.proedims.users.component.GroupConverter</converter-class>
</converter>
但是,當我提交表單,我得到了異常:
> SEVERE: javax.el.PropertyNotFoundException: /admin/user.xhtml @73,66
> itemLabel="#{group.name}": Property 'name' not found on type java.lang.String
移除面配置的轉換器(因爲你已經使用的FacesConverter註釋),並嘗試 – Daniel
沒了,還是同樣的錯誤 – Cichy
什麼是adminUsersMB.groups的定義是什麼?似乎認爲該組是一個字符串。 – SteveS