真奇怪......
我有一个转换器,当我使用p:SelectOneMenu时可以工作,但当我切换到一个p: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>
我只能假设转换器正常,因为它适用于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 :(得分:0)
最后,它被调用了一个递归的@RooToString方法。我必须检查数据模型关系并向@RooToString添加注释以避免在几个实体中循环
@RoToString(excludeFields = {“adminRegion”})