bboss mvc忽略对bean属性进行参数绑定方法
程序员文章站
2022-03-31 09:05:19
...
bboss mvc忽略对bean属性进行参数绑定方法非常简单,通过在bean的属性上添加@IgnoreBind注解即可,参考示例如下:
@IgnoreBind另外的一个作用:如果对象存在自引用关系,可以用来防止mvc参数绑定时出现死循环导致堆栈溢出的问题,例如对象结构为:
UserBusinessBean对象中定义了以下属性businessList:
@IgnoreBind
private List<UserBusinessBean> businessList;
如果不加 @IgnoreBind注解,那么mvc在绑定UserBusinessBean类型的参数时,就导致堆栈溢出,加上就没问题,以下是可能出现的堆栈溢出错误信息以供参考:
import org.frameworkset.util.annotations.IgnoreBind; public class ExampleBean { @IgnoreBind private String name = null; public String getName() { return name; } public void setName(String name) { this.name = name; } }
@IgnoreBind另外的一个作用:如果对象存在自引用关系,可以用来防止mvc参数绑定时出现死循环导致堆栈溢出的问题,例如对象结构为:
public class UserBusinessBean { private String id;// 主键id private String userId;// 用户id private String userRealname;// 用户名称 private String modelId;// 设备型号id private String equipmentModel;// 设备型号 private String geographicalPosition;// 地理位置 private String faultId;// 故障部位id private String faultPosition;// 故障部位 @IgnoreBind private List<UserBusinessBean> businessList; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getModelId() { return modelId; } public void setModelId(String modelId) { this.modelId = modelId; } public String getGeographicalPosition() { return geographicalPosition; } public void setGeographicalPosition(String geographicalPosition) { this.geographicalPosition = geographicalPosition; } public String getFaultId() { return faultId; } public void setFaultId(String faultId) { this.faultId = faultId; } public String getEquipmentModel() { return equipmentModel; } public void setEquipmentModel(String equipmentModel) { this.equipmentModel = equipmentModel; } public String getFaultPosition() { return faultPosition; } public void setFaultPosition(String faultPosition) { this.faultPosition = faultPosition; } public String getUserRealname() { return userRealname; } public void setUserRealname(String userRealname) { this.userRealname = userRealname; } public List<UserBusinessBean> getBusinessList() { return businessList; } public void setBusinessList(List<UserBusinessBean> businessList) { this.businessList = businessList; } }
UserBusinessBean对象中定义了以下属性businessList:
@IgnoreBind
private List<UserBusinessBean> businessList;
如果不加 @IgnoreBind注解,那么mvc在绑定UserBusinessBean类型的参数时,就导致堆栈溢出,加上就没问题,以下是可能出现的堆栈溢出错误信息以供参考:
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) v ~RuntimeStub::*Error throw_exception J sun.nio.cs.ext.DoubleByte$Encoder.encodeArrayLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; J sun.nio.cs.ext.DoubleByte$Encoder.encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; J java.nio.charset.CharsetEncoder.encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult; J sun.nio.cs.StreamEncoder.implWrite([CII)V J sun.nio.cs.StreamEncoder.write([CII)V J sun.nio.cs.StreamEncoder.write(Ljava/lang/String;II)V J java.io.OutputStreamWriter.write(Ljava/lang/String;II)V J java.io.Writer.write(Ljava/lang/String;)V J org.apache.log4j.helpers.CountingQuietWriter.write(Ljava/lang/String;)V J org.apache.log4j.WriterAppender.subAppend(Lorg/apache/log4j/spi/LoggingEvent;)V J org.apache.log4j.RollingFileAppender.subAppend(Lorg/apache/log4j/spi/LoggingEvent;)V J org.apache.log4j.WriterAppender.append(Lorg/apache/log4j/spi/LoggingEvent;)V J org.apache.log4j.AppenderSkeleton.doAppend(Lorg/apache/log4j/spi/LoggingEvent;)V J org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(Lorg/apache/log4j/spi/LoggingEvent;)I J org.apache.log4j.Category.callAppenders(Lorg/apache/log4j/spi/LoggingEvent;)V J org.apache.log4j.Category.debug(Ljava/lang/Object;)V J org.frameworkset.web.servlet.handler.HandlerUtils.newCommandObject(Ljava/lang/Class;)Ljava/lang/Object;
上一篇: 扩展bboss标签库编写自己的标签