我有一个页面,我通过p:commandButton打开一个对话框。当没有为p:pickList设置converter-attribute时,一切运行良好,但是当对话框拒绝打开时。
这里是xhtml(仅相关部分):
<p:dialog id="dialog" widgetVar="eventDialog" resizable="false" header="Event">
<h:form>
<p:panelGrid id="eventPanel" columns="2">
<h:outputLabel value="Participants" />
<p:pickList id="participants" value="#{eventBean.dualList}" var="person"
itemValue="{person}" showCheckbox="true"
converter="#{eventBean.personConverter}" showSourceFilter="true"
showTargetFilter="true" filterMatchMode="contains"
itemLabel="#{person.name}, #{person.forename}" />
<f:facet name="sourceCaption">Personen</f:facet>
<f:facet name="targetCaption">Participant</f:facet>
<p:commandButton value="Save" icon="ui-icon-disk"
action="#{eventBean.saveEvent()}" onsuccess="eventDialog.hide()"
update="@all" ajax="false" />
</p:panelGrid>
</h:form>
</p:dialog>
<h:form id="eventForm">
<p:commandButton value="Create Event" action="#{eventBean.createEvent()}"
oncomplete="eventDialog.show()" update=":dialog" styleClass="spaceBottom2" />
</h:form>
和bean EventBean(仅相关部分):
@ManagedBean
@ViewScoped
public class EventBean {
public EventBean() {
converter = new PersonConverter(#list of persons);
}
public PersonConverter getPersonConverter() {
return converter;
}
}
我无法弄清楚为什么它不适用于转换器,转换器可以在另一个页面中执行此操作。
答案 0 :(得分:0)
根据我对PF的经验,我总是把我的变量称为getter和setter,否则我遇到了很多问题。
在您的XML中
converter="#{eventBean.personConverter}"
我可能错了,但我相信它会查找变量personConverter
的getter。
但是在你的bean中你只调用变量converter
。尝试将其重命名为personConverter
。