Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf <;p:selectmanymenuvar>;抛出ELException:类';java.lang.String';没有属性';foo';_Jsf_Jsf 2_Primefaces_Selectmanymenu - Fatal编程技术网

Jsf <;p:selectmanymenuvar>;抛出ELException:类';java.lang.String';没有属性';foo';

Jsf <;p:selectmanymenuvar>;抛出ELException:类';java.lang.String';没有属性';foo';,jsf,jsf-2,primefaces,selectmanymenu,Jsf,Jsf 2,Primefaces,Selectmanymenu,我正试图在showcase中所示的高级模式下实现primefacesselectManyMenu,但无法正常工作 不过,它在selectOneMenu上非常有效 以下是我的SelectOne功能表代码: <p:selectOneMenu id="param" value="#{containerResultBean.selectedParam}" converter="omnifaces.SelectItemsConverter" var="pa"

我正试图在showcase中所示的高级模式下实现primefaces
selectManyMenu
,但无法正常工作

不过,它在
selectOneMenu
上非常有效

以下是我的SelectOne功能表代码:

<p:selectOneMenu id="param" value="#{containerResultBean.selectedParam}"
                 converter="omnifaces.SelectItemsConverter" var="pa"
                 filter="true" filterMatchMode="contains" >
      <f:selectItem itemLabel="Select questions" itemValue="" />
      <f:selectItems value="#{containerResultBean.paramList}"
                     var="parameter" itemLabel="#{parameter.name}"
                     itemValue="#{parameter}"/>
      <p:column >
           <h:outputText styleClass="mediumFont" value="#{pa.name}"/>
           <h:outputText styleClass="mediumFont" value="#{pa.category.name}"/>
      </p:column>
</p:selectOneMenu>

对于selectManyMenu

<p:selectManyMenu id="param" value="#{containerResultBean.selectedParamsList}"
                 converter="omnifaces.SelectItemsConverter" var="pa"
                 filter="true" filterMatchMode="contains" >
      <f:selectItem itemLabel="Select questions" itemValue="" />
      <f:selectItems value="#{containerResultBean.paramList}"
                     var="parameter" itemLabel="#{parameter.name}"
                     itemValue="#{parameter}"/>
      <p:column >
           <h:outputText styleClass="mediumFont" value="#{pa.name}"/>
           <h:outputText styleClass="mediumFont" value="#{pa.category.name}"/>
      </p:column>
</p:selectManyMenu>

我收到一个错误
value=“#{pa.name}”:类“java.lang.String”没有属性“name”。

我已经双重检查了我的
equal()
hashcode()
toString()
方法。我认为如果这些方法有问题,那么
selectOneMenu
也不应该起作用


请注意,当我删除
var='pa'
时,它工作正常。

这是由占位符项引起的,占位符项的值为空字符串

<f:selectItem itemLabel="Select questions" itemValue="" />
它在
中工作,因为当项目值为时,它的渲染器只是简单地呈现标签(如果它实际上为
null
,则会失败;这反过来可能是PrimeFaces中的疏忽/错误)

另见:

containerResultBean.selectedParamsList
列表对象吗?似乎将
pa
视为一个字符串对象。@Miguel是的,selectedParamsList是一个列表对象<代码>私有列表selectedParamsList=new ArrayList()@Miguel我不明白为什么它在ManyMenu中被当作字符串对象,而不是在OneMenu中?@Miguel谢谢,但Omnifaces converter使用的是类的toString方法,类似于他自己实现的方法。转换器只是将实体对象转换为字符串,然后从字符串转换回实体。因此,如果转换器出现问题,OneMenu也不应工作。这就是我对转换器的理解。此外,转换器仅适用于
,而不适用于自定义表示。感谢它的工作,但为什么中的空字符串会导致ManyMenu出现问题而不是OneMenu出现问题?我只是查看了它的源代码并更新了答案。明白了为什么它会在OneMenu中工作。但是如果它的
为null
,它会失败是什么意思?什么是空的?
如果在其中使用了
itemValue=“#{null}”
,将显示一个空的自定义项。
<f:selectItem itemLabel="Select questions" itemValue="#{null}" />