XStream-使用属性设置器代替直接字段访问。
|
我正在尝试使用XStream从XML加载对象。
默认情况下,XStream似乎使用直接字段访问。因此,当您将名为\'rolesAsString \'的字段映射到名为\'roles \'的别名时,它将从\'roles \'标记中获取值,并尝试将其直接设置为您的\'rolesAsString \'字段在你班上。在大多数情况下,这是可行的,但对我而言,这种方法不可行。
这是与问题相关的XML:
<principal name=\"admin\" roles=\"role1, role2, role3\">
这是课程:
public class Principal {
private Set<String> roles = new HashSet<String>();
public Set<String> getRoles() {
return roles;
}
public void setRolesAsString(String roles) {
for (String role : roles.split(\",\")) {
role = role.trim();
if (!\"\".equals(role)) { //ignore empty string roles
this.roles.add(role);
}
}
}
public String getRolesAsString() {
StringBuilder result = new StringBuilder();
boolean first = true;
for (String role : roles) {
if (first) {
first = false;
} else {
result.append(\", \");
}
result.append(role);
}
return result.toString();
}
我试图从xml文件加载配置时使XStream调用setRolesAsString,而不是尝试直接连接到role字段。
我曾尝试使用JavaBeanConverter转换器进行此操作,但无法使其正常工作。我正在使用的代码是:
configParser.registerLocalConverter(Principal.class, \"roles\", new JavaBeanConverter(configParser.getMapper()) {
@Override
public boolean canConvert(@SuppressWarnings(\"rawtypes\") Class clazz) {
return true;//should make XStream to always use this converter for that field.
}
});
configParser.aliasAttribute(Resource.class, \"roles\", \"roles\");
知道我在哪里出错了吗?
谢谢,
Stef。
没有找到相关结果
已邀请:
0 个回复