这是我的第一篇文章。我正在尝试为我的 primefaces 应用程序制作一个选择列表。我可以看到源部分中列出的值,也可以将源值传递给屏幕中的目标面板。但是在服务器端,tariffListForDestination(绑定到选择列表中的目标面板)仍然是空的。但在屏幕上一切正常。而且当我调试我的应用程序并在 ontransfer 方法中设置断点并将源对象传递给目标时,我在 event.getItems 中看不到任何值(事件传输事件)。
我在下面发送我的代码的相关部分。
谢谢您的回复。
DÇ
我的 xhtml 代码片段:
<p:pickList id="pojoPickList" value="#{serviceCopyInsertBean.tariffList}" var="tariff" effect="bounce"
itemValue="#{tariff}" itemLabel="#{tariff.cpcmOfferName}" converter="tmp2TariffDescMappingConverter"
showSourceControls="true" showTargetControls="true" showCheckbox="true"
showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains" >
<f:facet name="sourceCaption">Available</f:facet>
<f:facet name="targetCaption">Starting</f:facet>
<p:ajax event="transfer" listener="#{serviceCopyInsertBean.onTransfer}"/>
<p:column style="width:75%;">
#{tariff.cpcmOfferName}
</p:column>
</p:pickList>
我的转换器 Tmp2TariffDescMappingConverter
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import com.i2i.st.entity.Tmp2TariffDescMapping;
@FacesConverter("tmp2TariffDescMappingConverter")
public class Tmp2TariffDescMappingConverter implements Converter {
private static List<Tmp2TariffDescMapping> tmp2TariffDescMappingDB;
static {
tmp2TariffDescMappingDB = new ArrayList<Tmp2TariffDescMapping>();
}
public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
if (submittedValue.trim().equals("")) {
return null;
} else {
try {
int number = Integer.parseInt(submittedValue);
for (Tmp2TariffDescMapping tmp :tmp2TariffDescMappingDB) {
if (tmp.getCpcmOfferId() == number) {
return tmp;
}
}
} catch(NumberFormatException exception) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Tmp2TariffDescMapping"));
}
}
return null;
}
public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
if (value == null) {
return null;
} else {
return String.valueOf(((Tmp2TariffDescMapping) value).getCpcmOfferId());
}
}
}
我的 JSF 豆
private DualListModel<Tmp2TariffDescMapping> tariffList=new DualListModel<Tmp2TariffDescMapping>();
private List<Tmp2TariffDescMapping> tariffListForSource=new ArrayList<Tmp2TariffDescMapping>();
private List<Tmp2TariffDescMapping> tariffListForDestination=new ArrayList<Tmp2TariffDescMapping>();
tariffList=new DualListModel<Tmp2TariffDescMapping>(tariffListForSource, tariffListForDestination);