相关疑难解决方法(0)

使用使用java.beans类的jar(Introspector,BeanInfo或PropertyDescriptor)

我有第三方jar(我无法改变)使用java.beans.Introspector,java.beans.BeanInfojava.beans.PropertyDescriptor.

如何在我的Android应用程序中使用该jar?

它无法Introspector从第3方jar 加载类(使用):

WARN/dalvikvm(780): VFY: unable to resolve static method 6325: Ljava/beans/Introspector;.getBeanInfo (Ljava/lang/Class;)Ljava/beans/BeanInfo;
WARN/dalvikvm(780): VFY: unable to resolve exception class 962 (Ljava/beans/IntrospectionException;)
WARN/dalvikvm(780): Verifier rejected class Lorg/thirdpartyjar/SomeClass;
Run Code Online (Sandbox Code Playgroud)

java reflection android

18
推荐指数
2
解决办法
8026
查看次数

将POJO转换为<K,V>地图

可能重复:
如何将Java对象(bean)转换为键值对(反之亦然)?

转换a的最佳方法List<POJO> to a List<Map<K,V>>. 是什么?是否有自定义方法/ API?

K = POJO的字段名称,V是对应的值

public class POJO implements Serializable{

String name;
String age;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)

java map pojo

11
推荐指数
2
解决办法
1万
查看次数

如何从Map映射到List

我正在开发一个项目,我需要从层次结构Map<String, Object>中映射,其中第二个参数应该是a StringMap<String, Object>.到目前为止,ModelMapper工作得很棒,但我遇到了特定转换的问题.鉴于以下内容,其中Model只是一个标记界面:

class Client implements Model {
    String firstName;
    String lastName;
    List<Organization> organizations = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

假设Organization实现了我的标记界面,Model但是任意结构,我希望能够将以下内容映射到Client:

Map source = new HashMap(){{
    put("firstName", "John"),
    put("lastName", "Smith"),
    put("organizations", new HashMap(){{
        put("0", new HashMap(){{
            put("id", "1234");
        }});
        put("abc", new HashMap(){{
            put("id", "5678");
        }});
    }});
}};
Run Code Online (Sandbox Code Playgroud)

总结:在推入组织属性时,我如何让ModelMapper删除映射键并仅使用值列表?如果做不到这一点,组织的财产就会变空.你可能认为我有充分的理由希望这样做,而且是一个糟糕的例子!

提前感谢您的意见!

编辑

我试图建立一个Converter将管理从转换MapCollection<Model>无果.鉴于:

new Converter<Map, Collection<DataTransportObject>>() {
    @Override
    public Set convert(MappingContext<Map, Collection<DataTransportObject>> context) { …
Run Code Online (Sandbox Code Playgroud)

java modelmapper

5
推荐指数
1
解决办法
1488
查看次数

使用JAX-RS在一个对象中合并两个查询参数

我有一些资源处理方法,其中包含带有的数十个@QueryParam参数@Default,并按大致主题(分页/排序,过滤,身份验证)分组。这确实很麻烦,我想简化一下。好消息是这些参数按主题(分页,排序,过滤等)分组,因此我可以将整个参数集简化为4种方法。

我该如何实现?

通常,我想从这里得出:

@GET
public Response findAll(
    @QueryParam("sort") @DefaultValue("name") List<String> sort,
    @QueryParam("from") UUID fromId
) {
  // Validate sort
  // Validate fromId
}
Run Code Online (Sandbox Code Playgroud)

对此:

@GET
public Response findAll(@Context Pagination pagination) { // Inject pagination
  // Yeah, small code! Yeah, modularity!
}

// Create the pagination somewhere else.

public Pagination createPagination(@Context UriInfo uriInfo) {
  Optional<UUID> fromId = extractFromId(uriInfo); // retrieve "from" from uriInfo
  List<String> sort = extractSort(uriInfo); // retrieve "sort" from uriInfo
  Pagination pagination = new Pagination(); …
Run Code Online (Sandbox Code Playgroud)

java jax-rs

5
推荐指数
1
解决办法
1984
查看次数

如何使用Spring数据mongoDB执行部分更新(MongoOperations)

在我的数据库中,我有一个看起来像这样的文档

{
    "_id" : ObjectId("5864ddd8e38112fd70b89893"),
    "_class" : "com.apic.models.UserReg",
    "name" : "Bijay",
    "email" : "apic.apps@gmail.com",
    "psd" : "16d932a5a3da90cc6afd831016b5a6821f0badf7e2c624159205924433613c3a",
    "activationToken" : "fe8376ea2dbdf61ebc0f11a2361d741ba3178362d5bf876cf47e6a126bc5b39c",
    "verified" : false
}
Run Code Online (Sandbox Code Playgroud)

我也有一个看起来像这样的豆子

public class User {
  @Id
  private int id;
  private String name;
  private String email;

  // getter/setter methods

}
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试调用save()方法时MongoOperations,它会替换所有缺少的属性,如psd,verified和activationToken.

mongoOperations.save(user, COLLECTION);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以更新我的模型类中的现有属性并保留其他属性吗?

mongodb spring-data

5
推荐指数
2
解决办法
3581
查看次数

将POJO转换为Map

我有以下内容:

public class ChargeRequest {
    @Expose
    private String customerName;
    @Expose
    private String stripeToken;
    @Expose
    private String plan;
    @Expose
    private String[] products;

    gettersAndSetters()...

    public Map<String, Object> toMap() {
        return gson.fromJson(this, new TypeToken<Map<String, Object>>() {
        }.getType());
    }

    public String toString() {
        return gson.toJson(this, getClass());
    }
}
Run Code Online (Sandbox Code Playgroud)

我正试图转换ChargeRequest成一个Map<String, Object>与Gson.

我的适配器:

public static class JsonAdapter implements  JsonDeserializer<ChargeRequest>{
        @Override
        public ChargeRequest deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            ChargeRequest cr = new ChargeRequest();
            JsonObject o = json.getAsJsonObject();
            o.add("customerName", o.get("customerName")); …
Run Code Online (Sandbox Code Playgroud)

java json gson stripe-payments

4
推荐指数
2
解决办法
8348
查看次数

在我的JSP中实现Map的Bean不会调用getter

我已经制作了一些自定义bean来实现Map接口,以便轻松访问JSP中的任意数据.

例:

${person["cellPhoneNumber"]}
Run Code Online (Sandbox Code Playgroud)

这些额外的数据可能会或可能不会添加到后端,因此Map似乎是一种很好的灵活方式来存储它.

当我尝试在我的bean上使用getter时会出现问题.我的Person类有一个getName()方法.在我的JSP中使用以下内容时,将Map.get()调用该方法而不是my方法.

${person.name}
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这个调用Map get("name")并调用getName()呢?

这是我的基本(剥离)Java类:

class Person implements Map
{
    private HashMap<String, Object> myMap;
    private String name;
    public Object get(Object key)
    {
        return myMap.get(key);
    }
    public String getName()
    {
        return this.name;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用JSTL 1.1

java jsp

1
推荐指数
1
解决办法
966
查看次数