Java-ajax中字符串的对象

Java-ajax中字符串的对象,java,ajax,generics,Java,Ajax,Generics,我正在建设一个网站,我有几个不同的部分,如指南,电影等,他们都应该有一个类似的按钮 因此,如果按下like按钮,我想增加DB中like的数量 我有不同的数据库模型,比如UserGuides,Movies等等,我希望有一个通用的AJAX函数 if (obj.equals("UserGuides")) { ajaxLike(UserGuides.class, new UserGuides(), username, title); } 这意味着

我正在建设一个网站,我有几个不同的部分,如指南,电影等,他们都应该有一个类似的按钮

因此,如果按下like按钮,我想增加DB中like的数量

我有不同的数据库模型,比如
UserGuides
Movies
等等,我希望有一个通用的AJAX函数

if (obj.equals("UserGuides")) {
                ajaxLike(UserGuides.class, new UserGuides(), username, title);
            }
这意味着:

如果用户在指南上,他按下“like”,我想更新UserGuide上的like整数,等等

我是这样做到的

在AJAX帖子中,我将类定义为我想要更新的字符串,例如
{obj:“UserGuides”}
,如果我想要更新UserGuide

现在我有了一个AJAX处理程序来处理我的所有请求

公共静态结果,如()抛出UnknownHostException、MongoException、, DbAuthException{

    Map<String, String[]> map = request().body().asFormUrlEncoded();
    String username = map.get("username")[0];
    String title = map.get("title")[0];
    String obj = map.get("obj")[0];

    if (username.equals("") || title.equals("") || obj.equals("")) {
        return badRequest();
    }
    if (obj.equals("UserGuides")) {
        ajaxLike(UserGuides.class, new UserGuides(), username, title);
        return ok();
    }
    return badRequest();
现在我显然必须为我的所有类都这样做,但优点是我只需要一个处理程序

现在我的泛型函数如下所示

private static <T> void ajaxLike(Class<T> objClass, T obj, String username,
            String title) throws UnknownHostException, MongoException,
            DbAuthException {

        Datastore ds = getDatabase();
        Query<T> q = ds.createQuery(objClass).field("title").equal(title);
        UpdateOperations<T> submitUpdate = ds.createUpdateOperations(objClass)
                .inc("likes");
        ds.update(q, submitUpdate);
        ds.ensureIndexes();

    }
private static void ajaxLike(类objClass,T obj,字符串username,
字符串标题)抛出UnknownHostException、MongoException、,
DbAuthException{
数据存储ds=getDatabase();
Query q=ds.createQuery(objClass).field(“title”).equal(title);
UpdateOperations submitUpdate=ds.createUpdateOperations(objClass)
.inc(“likes”);
更新(q,提交日期);
ds.ensureIndex();
}
  • 它在atm机上运行良好,但这是一种良好的做法吗

  • 您是否看到任何潜在的错误

  • 有更好的方法吗

若地图并没有用户名,你们会在那个里得到一个NPE。同样的,其他地方也一样


如果map没有用户名,你会在那里得到一个NPE。同样,在其他地方也一样。

我的AJAX请求不可能得到一个NPE。我还应该检查它吗?你应该检查它,除非你想得到NPE。我刚刚检查了它。似乎如果我试图访问元素,它总是空的
String adsasdad=map.get(“adsasdad”)[0]
我始终可以访问它,该值仅为null。@Klein在服务层中验证参数总是好的。在服务层中,您不应该注意“ajax请求中始终有用户名”这一事实.services不依赖于它们上面的层才能完美工作。好吧,我的AJAX请求不可能获得NPE。我是否仍要检查它?除非你喜欢获得NPE,否则你应该检查它。好吧,我刚刚检查了它。如果我尝试访问元素,它似乎总是空的
String adsasdad=map.get(“adsasdad”)[0]
我始终可以访问它,该值仅为null。@Klein在服务层中验证参数总是好的。在服务层中,您不应该注意“ajax请求中始终有用户名”这一事实。服务并不依赖于它们上面的层来完美地工作。
String username = map.get("username")[0];