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。     
已邀请:

要回复问题请先登录注册