我正在尝试使用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文件加载配置时调用setRolesAsString,而不是尝试直接连接到角色字段。
我已尝试使用JavaBeanConverter转换器,但我无法使其工作。我正在使用的代码是:
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();
}
我知道我在哪里出错了吗?
谢谢, 燕姿。