Jsf 选择具有空值的项

Jsf 选择具有空值的项,jsf,seam2,Jsf,Seam2,嗯,我有一套车应该在SelectOne菜单中。但是我有一个SelectItem(null,“ALL”) 请参阅我的xhtml: <h:selectOneMenu value="#{mb.carSelected}"> <f:selectItems value="#{mb.cars}" /> <s:convertEntity />

嗯,我有一套车应该在SelectOne菜单中。但是我有一个SelectItem(null,“ALL”)

请参阅我的xhtml:

<h:selectOneMenu value="#{mb.carSelected}">
                        <f:selectItems value="#{mb.cars}" />
                        <s:convertEntity />
                    </h:selectOneMenu>

在我的managedBean(MB)中:

private List cars=new ArrayList();
...
添加(新选择项(空,“全部”);
用于(c车:我的车){
添加(新的SelectItem(c,c.getModel());
}
当我选择“全部”并在提交表单中单击时,出现以下错误:

For input string: "ALL"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.<init>(Integer.java:660)
org.jboss.seam.ui.EntityIdentifierStore.get(EntityIdentifierStore.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
org.jboss.seam.ui.EntityIdentifierStore_$$_javassist_seam_13.get(EntityIdentifierStore_$$_javassist_seam_13.java)
org.jboss.seam.ui.AbstractEntityLoader.get(AbstractEntityLoader.java:27)
org.jboss.seam.ui.EntityConverter.getAsObject(EntityConverter.java:76)
输入字符串的
“全部”
forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
整型(Integer.java:660)
org.jboss.seam.ui.EntityIdentifierStore.get(EntityIdentifierStore.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:39)
reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
org.jboss.seam.intercept.RootInvocationContext.procedure(RootInvocationContext.java:32)
org.jboss.seam.intercept.SeamInvocationContext.procedure(SeamInvocationContext.java:56)
org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
org.jboss.seam.intercept.SeamInvocationContext.procedure(SeamInvocationContext.java:68)
org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
org.jboss.seam.intercept.SeamInvocationContext.procedure(SeamInvocationContext.java:68)
org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
org.jboss.seam.intercept.SeamInvocationContext.procedure(SeamInvocationContext.java:68)
org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
org.jboss.seam.ui.EntityIdentifierStore\u$$\ uJavassist\uSeam\u13.get(EntityIdentifierStore\u$$\ uJavassist\uSeam\u13.java)
org.jboss.seam.ui.AbstractEntityLoader.get(AbstractEntityLoader.java:27)
org.jboss.seam.ui.EntityConverter.getaObject(EntityConverter.java:76)

我调试了代码,并注意到在“EntityConverter.getAsObject”中传递的值是“ALL”,并发生转换错误。但另一个实体传递值,如1,2,3…

我不熟悉seam,如果是我,我将添加一个CarConverter。这是来自seam:我不熟悉seam,但在您发送的链接中,他们使用的是Jsf版本信息?创建selectItem对象列表由来已久,不再需要。这是一种更好的方法:保持模型不受视图特定污染。
For input string: "ALL"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.<init>(Integer.java:660)
org.jboss.seam.ui.EntityIdentifierStore.get(EntityIdentifierStore.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
org.jboss.seam.ui.EntityIdentifierStore_$$_javassist_seam_13.get(EntityIdentifierStore_$$_javassist_seam_13.java)
org.jboss.seam.ui.AbstractEntityLoader.get(AbstractEntityLoader.java:27)
org.jboss.seam.ui.EntityConverter.getAsObject(EntityConverter.java:76)