欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bboss mvc忽略对bean属性进行参数绑定方法

程序员文章站 2022-03-31 09:05:19
...
bboss mvc忽略对bean属性进行参数绑定方法非常简单,通过在bean的属性上添加@IgnoreBind注解即可,参考示例如下:
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;