2013-05-08 36 views
0

非常奇怪的一個...號碼:selectOneRadio轉換器造成堆的堆內存問題

我有,當我使用AP其工作的轉換器:selectOneMenu用於,但是當我切換到AP:SelectOneRadio,我得到一個大崩潰與一個java堆空間錯誤。堆棧跟蹤似乎沒有用,只是一個java.lang.OutOfMemeoryError。

這工作:

<p:selectOneMenu id="regions" value="#{aDMSBean.selectedRegion}"> 
    <f:selectItem itemLabel="Global" itemValue="#{null}" /> 
    <f:selectItems value="#{aDMSBean.adminRegions}" var="adminRegion" itemLabel="# {adminRegion.regionName}" itemValue="#{adminRegion}" />     
    <f:converter id="adminRegionConverter" converterId="regionConverter" /> 
    <p:ajax listener="#{aDMSBean.regionSelect}" update="unassignedTasks"></p:ajax>     
</p:selectOneMenu> 

這種崩潰和燒傷:

<p:selectOneRadio id="regions" value="#{aDMSBean.selectedRegion}"> 
     <f:selectItem itemLabel="Global" itemValue="#{null}" /> 
     <f:selectItems value="#{aDMSBean.adminRegions}" var="adminRegion" itemLabel="# {adminRegion.regionName}" itemValue="#{adminRegion}" />     
     <f:converter id="adminRegionConverter" converterId="regionConverter" /> 
     <p:ajax listener="#{aDMSBean.regionSelect}" update="unassignedTasks"></p:ajax>     
    </p:selectOneRadio> 

我只能假設轉換器是OK的,因爲它與selectOneMenu用於工作。

@FacesConverter("regionConverter") 
public class RegionConverter implements Converter { 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String value) { 
     Region region = null; 

     if (value != null && value.length() > 0) { 
      region = Region.findRegion(new Long(value)); 
     } 

     return region; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent component, Object value) { 
     String val = ""; 
     if (value != null && value instanceof Region) { 
      val = ((Region) value).getId().toString(); 
     } 
     return val; 
    } 
} 

問候

+0

嗨,到底這是一個被調用的遞歸RooToString方法。我必須檢查數據模型關係併爲RooToString添加註釋以避免少數實體中的循環RooToString(excludeFields = {「adminRegion」}) – smackenzie 2013-05-16 15:35:49

回答

0

在最終是被稱爲遞歸@RooToString方法。我不得不檢查數據模型關係,並添加註釋,以@RooToString避免週期在幾個實體

@RooToString(排斥域excludeFields = {「adminRegion」})