PrimeFaces p:dataList 发出错误 "Property 'ime' not found on type java.lang.String"
PrimeFaces p:dataList issues error "Property 'ime' not found on type java.lang.String"
我想制作Checkbox菜单并在dataList中显示数据。这是我的 xhtml:
<h:form>
<h:panelGrid columns="3" cellpadding="5">
<h:outputLabel for="menu" value="Demonstratori :" />
<p:selectCheckboxMenu id="menu" value="#{nastavnik.odabraniDemonstratori}" label="Demonstratori:"
filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<f:selectItems value="#{nastavnik.sviDemonstratori}" var="demons" itemLabel="#{demons.ime} #{demons.prezime}" itemValue="#{demons}" />
</p:selectCheckboxMenu>
<p:commandLink value="Submit" update="display" />
</h:panelGrid>
<p:outputPanel id="display" style="width:250px;padding-left:5px;margin-top:10px">
<p:dataList value="#{nastavnik.odabraniDemonstratori}" var="d" type="ordered" emptyMessage="Nema odabranih demonstratora">
#{d.ime}"
</p:dataList>
</p:outputPanel>
</h:form>
这是来自 Nastavnik bean 的重要代码:
private ArrayList<Demonstrator> odabraniDemonstratori;
public void setOdabraniDemonstratori(ArrayList<Demonstrator> odabraniDemonstratori) {
this.odabraniDemonstratori = odabraniDemonstratori;
}
public ArrayList<Demonstrator> getOdabraniDemonstratori() {
return odabraniDemonstratori;
}
演示程序 bean 有 属性 ime
。一切正常,但是当我尝试使用 #{d.ime}
在 dataList 中显示数据时,出现此错误:
/unoslabvezbe.xhtml @84,49 value="#{d.ime}": Property 'ime' not found on type java.lang.String
d
属性 是 Demonstrator 类型而不是 String。有帮助吗?
使用选择组件(例如 p:selectCheckboxMenu
或 p:pickList
)时,您需要一个转换器来处理复杂的(= 不是简单的字符串)Java 对象作为 f:selectItems
。转换器将序列化和反序列化您的实体 Demonstrator
.
因此您需要为您的 p:selectCheckboxMenu
添加 converter
属性并引用您自己的转换器,或者更好的是,使用现成的 SelectItemsConverter
(showcase link) provided by Omnifaces,一个非常适合 JSF 开发人员的实用程序库(安装很简单:添加 .jar 文件或在 Maven 中添加新的依赖项)。
<p:selectCheckboxMenu id="menu" value="#{nastavnik.odabraniDemonstratori}" converter="omnifaces.SelectItemsConverter" label="Demonstratori:" filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<f:selectItems value="#{nastavnik.sviDemonstratori}" var="demons" itemLabel="#{demons.ime} #{demons.prezime}" itemValue="#{demons}" />
</p:selectCheckboxMenu>
注意:要了解有关设计自己的转换器的更多信息(不是要走的路):
- Generic JSF entity converter
- How to write a custom converter for <p:pickList>
我想制作Checkbox菜单并在dataList中显示数据。这是我的 xhtml:
<h:form>
<h:panelGrid columns="3" cellpadding="5">
<h:outputLabel for="menu" value="Demonstratori :" />
<p:selectCheckboxMenu id="menu" value="#{nastavnik.odabraniDemonstratori}" label="Demonstratori:"
filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<f:selectItems value="#{nastavnik.sviDemonstratori}" var="demons" itemLabel="#{demons.ime} #{demons.prezime}" itemValue="#{demons}" />
</p:selectCheckboxMenu>
<p:commandLink value="Submit" update="display" />
</h:panelGrid>
<p:outputPanel id="display" style="width:250px;padding-left:5px;margin-top:10px">
<p:dataList value="#{nastavnik.odabraniDemonstratori}" var="d" type="ordered" emptyMessage="Nema odabranih demonstratora">
#{d.ime}"
</p:dataList>
</p:outputPanel>
</h:form>
这是来自 Nastavnik bean 的重要代码:
private ArrayList<Demonstrator> odabraniDemonstratori;
public void setOdabraniDemonstratori(ArrayList<Demonstrator> odabraniDemonstratori) {
this.odabraniDemonstratori = odabraniDemonstratori;
}
public ArrayList<Demonstrator> getOdabraniDemonstratori() {
return odabraniDemonstratori;
}
演示程序 bean 有 属性 ime
。一切正常,但是当我尝试使用 #{d.ime}
在 dataList 中显示数据时,出现此错误:
/unoslabvezbe.xhtml @84,49 value="#{d.ime}": Property 'ime' not found on type java.lang.String
d
属性 是 Demonstrator 类型而不是 String。有帮助吗?
使用选择组件(例如 p:selectCheckboxMenu
或 p:pickList
)时,您需要一个转换器来处理复杂的(= 不是简单的字符串)Java 对象作为 f:selectItems
。转换器将序列化和反序列化您的实体 Demonstrator
.
因此您需要为您的 p:selectCheckboxMenu
添加 converter
属性并引用您自己的转换器,或者更好的是,使用现成的 SelectItemsConverter
(showcase link) provided by Omnifaces,一个非常适合 JSF 开发人员的实用程序库(安装很简单:添加 .jar 文件或在 Maven 中添加新的依赖项)。
<p:selectCheckboxMenu id="menu" value="#{nastavnik.odabraniDemonstratori}" converter="omnifaces.SelectItemsConverter" label="Demonstratori:" filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<f:selectItems value="#{nastavnik.sviDemonstratori}" var="demons" itemLabel="#{demons.ime} #{demons.prezime}" itemValue="#{demons}" />
</p:selectCheckboxMenu>
注意:要了解有关设计自己的转换器的更多信息(不是要走的路):
- Generic JSF entity converter
- How to write a custom converter for <p:pickList>