Как поместить данные списка с другим универсальным типом с одинаковым типом возврата? - PullRequest
0 голосов
/ 24 января 2019

Моя проблема в том, что ClassB - это распространенный класс бина, который я должен вернуть (формат данных Json с использованием @ResponseBody) простого сообщения об ошибке. ClassA - это объектный компонент , здесь нет метода установки и получения, чтобы установить сообщение об ошибке на fstList, fstListMap.Если есть какое-либо альтернативное решение или какое-либо решение для слияния для fstListMap,errsecstMap Object, чтобы вернуть общий объект карты.Если какие-либо изменения только ClassA bean-компонент изменяемый , но ClassB Не изменяемый.

@RequestMapping(value="getlistOfData",method=RequestMethod.GET)
@ResponseBody
public Map<String, List<ClassA>>
getListOfData(@RequestParam(value="param1")String
                      param1,@RequestParam(value="param2")int param2){

    List<ClassA> fstList=new ArrayList<ClassA>();//ClassA is an hibernate Entity
    Map<String, List<ClassA>> fstListMap=new HashMap<String, List<ClassA>>();

    List<ClassB> errsecstList=new ArrayList<ClassB>();//It is simple Bean class
    Map<String, List<ClassB>> errsecstMap=new HashMap<String, List<ClassB>>();
    ClassB clB=new ClassB();
    boolean isvalid=true;
    try{


        isvalid=newllbean.getisInvalidAge();//This value return drools (set in rule file)
        if(isvalid){//if true then go to this condition
            fstList=serviceClass.getfstList()
            fstListMap.put("fstList", fstList);
            System.out.println("fstList Size: "+fstListMap.size());
            System.out.println("fstList : "+fstListMap);//Am getting this data
        }else{
            String errMessage=clB.setErrorMessage("Age Not valid...");
            errsecstList.add(clB.getErrorMessage());
            errsecstMap.put("errorMessage",errsecstList);
            System.out.println("errMessage Size: "+errsecstMap.size());
            System.out.println("errMessage : "+errsecstMap);//I am getting this value
        }
    }catch(Exception e){
        System.out.println("Exception"+e);
    }
    return fstListMap;
}

как вернуть errsecstMap?

Нет параметра для установки errMessage в ClassA сущности.Я хочу вернуть один объект Map либо в случае, либо в другом случае.Есть какое-либо решение вернуть общий объект карты для возврата на основе приведенного выше кода?

1 Ответ

0 голосов
/ 24 января 2019

Попробуйте это (это не скомпилировано) -

1) Создайте класс Response следующим образом -

import java.util.List;

public class ResponseClass<T> {

    public String str;
    public List<T> list;

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

}

2) Измените свой существующий класс следующим образом -

@RequestMapping(value="getlistOfData",method=RequestMethod.GET)
@ResponseBody
public ResponseClass<T>
getListOfData(@RequestParam(value="param1")String
                      param1,@RequestParam(value="param2")int param2){

    List<ClassA> fstList=new ArrayList<ClassA>();//ClassA is an hibernate Entity
    ResponseClass<ClassA> responseA = new ResponseClass<>();

    List<ClassB> errsecstList=new ArrayList<ClassB>();//It is simple Bean class
    ResponseClass<ClassB> responseB = new ResponseClass<>();

    ClassB clB=new ClassB();
    boolean isvalid=true;

    try{


        isvalid=newllbean.getisInvalidAge();//This value return drools (set in rule file)
        if(isvalid){//if true then go to this condition
            fstList=serviceClass.getfstList()
            responseA.setStr("fstList");
            responseA.setList(fstList);
            System.out.println("fstList Size: "+fstListMap.size());
            System.out.println("fstList : "+fstListMap);//Am getting this data
            return responseA;
        }else{
            String errMessage=clB.setErrorMessage("Age Not valid...");
            errsecstList.add(clB.getErrorMessage());
            responseB.setStr("errorMessage");
            responseB.setList(errsecstList);
            System.out.println("errMessage Size: "+errsecstMap.size());
            System.out.println("errMessage : "+errsecstMap);//I am getting this value
            return responseB;
        }
    }catch(Exception e){
        System.out.println("Exception"+e);
    }
}

Очевидно, что приведенный выше код может быть легко оптимизирован в зависимости от вашего пользовательского случая.Это простая реализация.

...