javabean设置初始值_xstreamjavabean设置属性默认值的问题在xstream反序列化使⽤过程中发现,如果xml⽆该属性,则改属性会被⾃动复制为null。
public abstract class SBa {
@XStreamAsAttribute
春天的心
String id = "";
@XStreamAsAttribute
String name = "";
@XStreamAsAttribute
String title = "";
@XStreamAsAttribute
String enabled = "true";
@XStreamAsAttribute
教室布置设计方案
String value = "";
@XStreamAsAttribute
String newLine = "fal";
@XStreamOmitField
String typeName = "";
@XStreamAlias("text")qq秘密
public class SText extends SBa {
@XStreamAsAttribute
private String validateRule ;
高清性感美女图片public SText() {
tTypeName("text");
}
public String getValidateRule() {
return validateRule;
}
君子兰怎么养public void tValidateRule(String validateRule) {
加法算式this.validateRule = validateRule;
}
public String getTypeName() {
return typeName;
}
public void tTypeName(String typeName) {
}
}
可以看到xml中⽆typeName属性,但是在javabean中存在该属性,在反序列化过程中,该属性会被清除为null。改属性默认值为tTypeName("text");,默认值为"text"。为了保存改默认值,必须在初始化的时候设置:com.thoughtworks.xstream.XStream.XStream(ReflectionProvider reflectionProvider)
必须继承实现PureJavaReflectionProvider 类。
public class AnnotationJavaReflectionProvider extends PureJavaReflectionProvider
public class AnnotationJavaReflectionProvider extends PureJavaReflectionProvider {
白铃兰
/**
* 写字段时验证字段可以被访问,且对于String类型需要进⾏trim
*/
@Override
public void writeField(Object object, String fieldName, Object value, Class definedIn) {
Field field = fieldDictionary.Class(), fieldName, definedIn);
validateFieldAccess(field);
try {
if (value instanceof String)
field.t(object, ((String)value).trim());
el field.t(object, value);
} catch (IllegalArgumentException e) {
老君犁沟throw new ObjectAccessException("Could not t field " + Class() + "." + Name(), e); } catch (IllegalAccessException e) {
throw new ObjectAccessException("Could not t field " + Class() + "." + Name(), e); }
}
}
重载后在xstream初始化的时候,传⼊参数,则实现了保存javabean的默认值。
XStream stream = new XStream(new AnnotationJavaReflectionProvider());