我面临一个奇怪的问题:p:autoComplete,我得到以下错误
java.lang.NumberFormatException:对于输入字符串:“player”
我的代码如下
XHTML
<p:autoComplete id="schedChemAC" value="#{testMB.selectedPlayer}" completeMethod="#{testMB.completePlay}" process="@this" var="m" itemLabel="#{m.player}" itemValue="#{m}" converter="#{testConverter}">
<p:ajax event="itemSelect" listener="#{testMB.onSelectFrstL}" process="@this"/>
</p:autoComplete>
的MBean
public List<Player> getSelectedPlayer() {
return selectedPlayer;
}
public void setSelectedPlayer(List<Player> selectedPlayer) {
this.selectedPlayer = selectedPlayer;
}
public void getName() {
playerName = playerSession.getAll();
}
public List<Player> completePlay(String query) {
List<Player> suggestion = new ArrayList<Player>();
if (playerName == null) {
getName();
}
for (Player c : playerName) {
if (c.getPlayer().toUpperCase().contains(query.toUpperCase())) {
suggestion.add(c);
}
}
return suggestion;
}
public void onSelectFrstL(SelectEvent event) {
}
转换器
@Named(value = "testConverter")
public class TestConverter implements Converter {
@EJB
PlayerSession playSession;
public static List<Player> playLst;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (playLst == null) {
playLst = playSession.getAll();
}
if (value.trim().equals("")) {
return null;
} else {
try {
int number = Integer.parseInt(value);
for (Player c : playLst) {
if (c.getPk() == number) {
return c;
}
}
} catch (Exception ex) {
System.out.println("error");
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null || value.equals("")) {
return "";
} else {
return String.valueOf(((Player) value).getPk());
}
}
}
我无法在上面的代码中找到错误,如果我删除var,itemValue,itemLabel,转换器部分然后它工作正常但是一旦我把var,itemValue,itemLabel,转换器代码(如下所示)主要展示)我得到上述错误。 请指导我做错了什么或者我应该检查什么。
注意:我的样本表只有两列,pk(int)&amp;播放器(字符串)。
答案 0 :(得分:1)
我想出了问题,基本上如果我将列表传递给值(自动完成),则使用Multiple =“true”。而只做一个选择我需要只将Player对象传递给值(自动完成)。 希望这可以帮助其他人发帖而不理解它是如何工作的(像我一样)。