我有一個primefaces selectOneMenu,它使用javax.faces.convert.Converter來顯示設備。當ID大於127時FacesConverter失敗?
只有當鍵(device's id)不大於127時,它才能正常工作。當它更大時,單擊commandButton後,selectOneMenu的箭頭變爲紅色,commandButton的動作不會執行。
爲什麼?有任何想法嗎?
<p:selectOneMenu id="deviceActionParameter"
value="#{sm.ruleConfigureBean.deviceActionParameter}"
style="width:200px;">
<f:selectItems value="#{sm.ruleConfigureBean.sensors}"
var="device" itemLabel="#{device.name}" />
<f:converter converterId="deviceConverter" />
</p:selectOneMenu>
轉換器:
@FacesConverter(value = "deviceConverter")
public class DeviceConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String key) {
DeviceDao deviceDao = GuiceSingleton.getInstance().getInstance(
DeviceDao.class);
try {
Device device = deviceDao.getDeviceById(new Long(key)); // this works
return device;
} catch (Exception e) {
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value != null && value instanceof Device) {
Device device = (Device) value;
return "" + device.getIdDevice();
}
return "";
}
}
任何拋出的異常? –
我非常難以將'Integer'與'=='進行比較。 –
「過早優化」的情況下,如果你問我 –