2012-11-17 47 views
1

我想設置在數組值但接收ClassCastException異常..的代碼JSF - selectOneMenu用於陣列INT

例如: page.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
    <title>Really simple CRUD</title> 
</h:head> 
<h:body> 
    <h:form id="form"> 
     <p:growl autoUpdate="true" showDetail="true"/> 
     <h:selectOneMenu converter="javax.faces.Integer" value="#{adminMBean.a[0]}"> 
      <f:selectItem itemLabel="1" itemValue="1"/> 
      <f:selectItem itemLabel="2" itemValue="2"/> 
     </h:selectOneMenu> 
     <h:commandButton value="ok" action="#{adminMBean.ok()}"/> 
     <h:outputText value="sa:#{adminMBean.a[0]}"/> 
    </h:form> 
</h:body> 

@ManagedBean(name = "adminMBean") 
@RequestScoped 
public class AdminMBean { 
    int[] a=new int[1]; 
public AdminMBean(){} 
    public int[] getA() { 
    return a; 
} 
public void setA(int[] a) { 
    this.a = a; 
} 
} 

如何設置值與selectonemenu數組?

+0

你爲什麼要設置數組中的選定值?總會有一個選定的項目。那麼爲什麼不使用'int'? –

+1

在將來的問題中,如果您發佈整個異常,而不是忽略/將其過度概括爲不相關的信息,將會很有幫助。它是*不*無關的信息。例外情況通常就是它自己的全部答案。我們只需要按照外行的條款翻譯他們:) – BalusC

回答

1

您是否讀取ClassCastException消息?它應該是這樣的:

java.lang.ClassCastException:無法類型[java.lang.Integer中]的對象添加到類型的對象的數組[INT]

見,您應該使用Integer[]而不是int[]

private Integer[] a = new Integer[1]; 

public Integer[] getA() { 
    return a; 
} 

該setter方式是不必要的。它不會用在這個構造中。