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、converter部分を削除すると正常に動作しますが、var、itemValue、itemLabel、converterコードを配置すると(プライムショーケースに示されているように)上記のエラーが発生します。私が間違っていること、または確認すべきことについて親切に案内してください。
注: サンプル テーブルには、pk(int) と player(string) の 2 つの列しかありません。