Browse Source

丰富功能

周浩 9 năm trước cách đây
mục cha
commit
9e0dd2d70f

+ 24 - 22
hsweb-web-controller/src/main/java/org/hsweb/web/controller/FastJsonHttpMessageConverter.java

@@ -1,16 +1,8 @@
 package org.hsweb.web.controller;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.PropertyPreFilter;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
 import org.hsweb.web.message.ResponseMessage;
 import org.springframework.http.HttpInputMessage;
@@ -19,9 +11,17 @@ import org.springframework.http.MediaType;
 import org.springframework.http.converter.AbstractHttpMessageConverter;
 import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
+import org.webbuilder.utils.common.StringUtils;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object> {
 
@@ -59,11 +59,8 @@ public class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<O
     @Override
     protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException,
             HttpMessageNotReadableException {
-
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
         InputStream in = inputMessage.getBody();
-
         byte[] buf = new byte[1024];
         for (; ; ) {
             int len = in.read(buf);
@@ -87,9 +84,15 @@ public class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<O
         String text;
         if (obj instanceof ResponseMessage) {
             ResponseMessage message = (ResponseMessage) obj;
-            if (message.isOnlyData())
+            if (message.isSuccess() && message.isOnlyData())
                 obj = message.getData();
             text = JSON.toJSONString(obj, parseFilter(message), features);
+            if (!StringUtils.isNullOrEmpty(message.getCallback())) {
+                text = new StringBuilder()
+                        .append(message.getCallback())
+                        .append("(").append(text).append(")")
+                        .toString();
+            }
         } else {
             text = JSON.toJSONString(obj, features);
         }
@@ -107,12 +110,11 @@ public class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<O
                 filters.add(filter);
             }
         if (responseMessage.getExcludes() != null)
-        for (Map.Entry<Class<?>, Set<String>> classSetEntry : responseMessage.getExcludes().entrySet()) {
-            SimplePropertyPreFilter filter = new SimplePropertyPreFilter(classSetEntry.getKey());
-            filter.getExcludes().addAll(classSetEntry.getValue());
-            filters.add(filter);
-        }
+            for (Map.Entry<Class<?>, Set<String>> classSetEntry : responseMessage.getExcludes().entrySet()) {
+                SimplePropertyPreFilter filter = new SimplePropertyPreFilter(classSetEntry.getKey());
+                filter.getExcludes().addAll(classSetEntry.getValue());
+                filters.add(filter);
+            }
         return filters.toArray(new PropertyPreFilter[filters.size()]);
     }
-
 }

+ 13 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/GenericController.java

@@ -14,6 +14,7 @@ import org.webbuilder.utils.common.ClassUtils;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 通用Controller,使用RESTful和json进行数据提交及访问。
@@ -68,7 +69,17 @@ public abstract class GenericController<PO, PK> {
                 data = getService().select(param);
             else
                 data = getService().selectPager(param);
-            return new ResponseMessage(true, data).onlyData();
+            ResponseMessage responseMessage = new ResponseMessage(true, data).onlyData();
+            Set<String> includes = param.getIncludes();
+            Set<String> excludes = param.getIncludes();
+
+            if (includes != null && includes.size() > 0) {
+                responseMessage.include(getPOType(), includes.toArray(new String[includes.size()]));
+            }
+            if (excludes != null && excludes.size() > 0) {
+                responseMessage.exclude(getPOType(), excludes.toArray(new String[excludes.size()]));
+            }
+            return responseMessage;
         } catch (Exception e) {
             return new ResponseMessage(false, e);
         }
@@ -163,6 +174,7 @@ public abstract class GenericController<PO, PK> {
             if (object instanceof GenericPo) {
                 ((GenericPo) object).setU_id(id);
             }
+
             int number = getService().update(object);
             return new ResponseMessage(true, number);
         } catch (Exception e) {

+ 2 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/module/ModuleController.java

@@ -7,6 +7,7 @@ import org.hsweb.web.controller.GenericController;
 import org.hsweb.web.service.module.ModuleService;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 
@@ -14,7 +15,7 @@ import javax.annotation.Resource;
  * 系统模块控制器,继承自GenericController,使用rest+json
  * Created by generator 2015-8-26 11:22:11
  */
-@Controller
+@RestController
 @RequestMapping(value = "/module")
 @AccessLogger("系统模块管理")
 @Authorize(module = "module")

+ 2 - 5
hsweb-web-controller/src/main/java/org/hsweb/web/controller/resource/ResourcesController.java

@@ -9,10 +9,7 @@ import org.hsweb.web.message.ResponseMessage;
 import org.hsweb.web.service.resource.ResourcesService;
 
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
@@ -24,7 +21,7 @@ import javax.annotation.Resource;
  * @version 1.0
  * @UpdateRemark 2015年8月31日,重写{@link ResourcesController#delete(String)}方法,删除资源时需要授权认证
  */
-@Controller
+@RestController
 @RequestMapping(value = "/resources")
 @AccessLogger("资源管理")
 public class ResourcesController extends GenericController<Resources, String> {

+ 1 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/user/UserController.java

@@ -7,6 +7,7 @@ import org.hsweb.web.controller.GenericController;
 import org.hsweb.web.logger.annotation.AccessLogger;
 import org.hsweb.web.message.ResponseMessage;
 import org.hsweb.web.service.user.UserService;
+import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;