问题描述
|
我正在尝试使用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\");
知道我在哪里出错了吗?
谢谢,
Stef。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)