Java 我无法使用JsonArray获取Servlet中的列表值

Java 我无法使用JsonArray获取Servlet中的列表值,java,json,servlets,Java,Json,Servlets,我使用JSON数组从Servlet中的Db获取值。我正在起诉以下代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub List<ProjectDto> act=new ArrayList<ProjectDt

我使用JSON数组从Servlet中的Db获取值。我正在起诉以下代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    List<ProjectDto> act=new ArrayList<ProjectDto>();
    act=ActivitiesDao.getActivitiesDetails();
    JSONArray jsonarray= new JSONArray();

    for(int i=0;i<act.size();i++)
    {
        JSONObject obj = new JSONObject();
        //obj.put("issueno", quiz.get(i).getIssueno());
        obj.put("projectName",act.get(i).getProjectName());         
        obj.put("projectDescription",act.get(i).getProjectDescription());
        obj.put("currentStatus", act.get(i).getCurrentStatus());
        obj.put("area", act.get(i).getArea());          
        jsonarray.put(obj);
    }
    System.out.println("Json in Servelt"+ jsonarray.toString());        
    response.getWriter().print(jsonarray.toString());
    }
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
List act=new ArrayList();
act=ActivitiesDao.getActivitiesDetails();
JSONArray JSONArray=新的JSONArray();
对于(int i=0;i);
var div='';
对于(var j=0;j'+''+obj.projectDescription+'

'+obj.currentStatus; } $(“.tab内容”).append(div); $('#tab-content-0').addClass('处于活动状态'); } $('#选项卡li').eq(0).addClass('active'); setListner(); 函数getUniqueList(responseText){ var-resArr=[]; responseText.filter(函数(x,i){ if(resArr.indexOf(x.area)=-1){ 重射推力(x面积); } }) //console.log(resArr); 返回mergeDataAreaWise(resArr,responseText); } 函数mergeDataAreaWise(区域,响应文本){ var tabList=[]; 对于(变量i=0;i'; prjlist=responseText[j].项目描述列表; /*输出=prjlist.split(“&”); proh=输出连接(“/n”); */ //proh=列表替换(/&/g,
); 状态=状态。替换(/&/g,
); var Obj={ 项目名称:“”+响应文本[j]。项目名称+“”, 项目描述:“”+prjlist+“”, 当前状态:“+”当前状态:“+”+状态 } var currentArea=responseText[j]。面积; if(表格列表[i]。面积===当前面积){ tabList[i].tabContent.push(Obj); } } } 控制台日志(tabList); 返回小报; } } }); 函数setListner(){ $(“#选项卡a”)。单击(函数(){ $(this.tab('show'); }); }
当然,您将得到值为
false

在setter中,您将返回一个
布尔值
,它确实设置了
projectDescriptionList
的值,但每次都会返回硬代码
false

解决方案

在你的接力棒里

// optional, just stick to setter rules, set the value and don't return anything.

public setProjectDescriptionList(List<String> projectDescriptionList) {
    this.projectDescriptionList = projectDescriptionList;
}

你好,Manoj,谢谢你纠正我。现在,这段代码运行良好。现在,我试图在ajax调用中访问ProjectDescriptionList,数据并没有在新行中被拆分。但现在用于分割数据的代码已经很好了。使用struts 2标记可以正常工作。但是使用ajax调用不起作用。现在,它以逗号(,)显示数据。例如:在DB中,我放置了像CSE | IT | ECE这样的数据。现在,它正在显示CSE、it、ECE。你能帮我吗Hi Manoj,你一直都在引导我你能帮我解决我的问题吗我正处于学习阶段…所以有很多issues@Rahul您确定数据库中的值是分开的,即(CSE | IT | CEC)等吗。?另外,避免在同一个帖子中问不同的问题,这是不推荐的做法。人们可能会对你的帖子升起旗帜,这可能导致删除所有此类帖子,并且账户可能会被暂停一段时间作为惩罚。所以要避免它。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    List<ProjectDto> act=new ArrayList<ProjectDto>();
    act=ActivitiesDao.getActivitiesDetails();
    JSONArray jsonarray= new JSONArray();



    for(int i=0;i<act.size();i++)
    {
        JSONObject obj = new JSONObject();
        obj.put("projectName",act.get(i).getProjectName());     
        String ttextt= act.get(i).getProjectDescription();
        obj.put("ProjectDescriptionList" , act.get(i).setProjectDescriptionList(NewsletterUtil.convertParagraphs(ttextt)));
        obj.put("currentStatus", act.get(i).getCurrentStatus());
        obj.put("area", act.get(i).getArea());
        obj.put("ProjectDescriptionList" , act.get(i).setProjectDescriptionList(NewsletterUtil.convertParagraphs(ttextt)));
        jsonarray.put(obj);

    }
    System.out.println("Json in Servelt"+ jsonarray.toString());

    response.getWriter().print(jsonarray.toString());
    }
public class ProjectDto {

private String projectName;
private String projectDescription;
private String currentStatus;
private String area;
private List<String> projectDescriptionList= new ArrayList<String>();

private List<String> currentStatusList=new ArrayList<String>();


public List<String> getCurrentStatusList() {
    return currentStatusList;
}
public void setCurrentStatusList(List<String> currentStatusList) {
    this.currentStatusList = currentStatusList;
}


public List<String> getProjectDescriptionList() {
    return projectDescriptionList;
}
public boolean setProjectDescriptionList(List<String> projectDescriptionList) {
    this.projectDescriptionList = projectDescriptionList;
    return false;
}
public String getCurrentStatus() {
    return currentStatus;
}
public void setCurrentStatus(String currentStatus) {
    this.currentStatus = currentStatus;
}
public String getArea() {
    return area;
}
public void setArea(String area) {
    this.area = area;
}

public String getProjectName() {
    return projectName;
}
public void setProjectName(String projectName) {
    this.projectName = projectName;
}
public String getProjectDescription() {
    return projectDescription;
}
public void setProjectDescription(String projectDescription) {
    this.projectDescription = projectDescription;
}
@Override
public String toString() {
    return "ProjectDto [projectName=" + projectName
            + ", projectDescription=" + projectDescription
            + ", currentStatus=" + currentStatus + ", area=" + area
            + ",  projectDescriptionList="
            + projectDescriptionList + "]";
}
    <script>
  $.ajax({
        type: "POST",
        url: "./ProjectServlet",
        success: function (responseText) {
            var jsonData = JSON.parse(responseText);
            var uniueTabs = getUniqueLists(jsonData);

      for (var i = 0; i < uniueTabs.length; i++) {
           $('#tabs').append('<li ><a href="#tab-content-' + i + '">' + uniueTabs[i].area + '</a></li>');
            var div = '<div id="tab-content-' + i + '" class="tab-pane fade">';

            for (var j = 0; j < uniueTabs[i].tabContent.length; j++) {
                var obj = uniueTabs[i].tabContent[j];
                div += '<p>' + obj.projectName + '</p>'+  '<p>' + obj.projectDescription + '</p>' + obj.currentStatus   ;
    }

    $('.tab-content').append(div);
            $('#tab-content-0').addClass('in active');
           }

            $('#tabs li').eq(0).addClass('active');
        setListner();



    function getUniqueLists(responseText) {
        var resArr = [];
        responseText.filter(function (x, i) {
            if (resArr.indexOf(x.area) === -1) {
                resArr.push(x.area);
            }
        })
        //console.log(resArr);
        return mergeDataAreaWise(resArr, responseText);
    }

    function mergeDataAreaWise(area, responseText) {
        var tabList = [];
        for (var i = 0; i < area.length; i++) {
            tabList.push({
                area: area[i],
                tabContent: []
            });
        }
        var prjlist;
        var output; 
        var proh;

        var status;


        for (var i = 0; i < tabList.length; i++) {
            for (var j = 0; j < responseText.length; j++) {            

          statuss = '<li>' + responseText[j].currentStatus + '</li>';
          prjlist= responseText[j].projectDescriptionList;


         /*  output= prjlist.split("&");
          proh=output.join("/n");
           */
          //proh=prjlist.replace(/&/g, '<br>');
          status =statuss.replace(/&/g, '<br>');

                var Obj = {

                    projectName: '<h3>'+ responseText[j].projectName +'</h3>',

                    projectDescription: '<p>'+ prjlist + '<p>',


                     currentStatus: '<b>'+ "Current Status:" +'</b>' + status 





                }


                   var currentArea = responseText[j].area;


                if (tabList[i].area === currentArea) {
                    tabList[i].tabContent.push(Obj);
                }
            }
        }


        console.log(tabList);
        return tabList;
    }



    }

    });
    function setListner () {
        $("#tabs a").click(function () {
            $(this).tab('show');
        });
    }


</script>
// optional, just stick to setter rules, set the value and don't return anything.

public setProjectDescriptionList(List<String> projectDescriptionList) {
    this.projectDescriptionList = projectDescriptionList;
}
act.get(i).setProjectDescriptionList(NewsletterUtil.convertParagraphs(ttextt));
obj.put("ProjectDescriptionList" ,act.get(i).getProjectDescriptionList() );
obj.put("currentStatus", act.get(i).getCurrentStatus());
obj.put("area", act.get(i).getArea());
// I don't know why you wrote it twice.. I'm commenting it.
//   obj.put("ProjectDescriptionList" , act.get(i).setProjectDescriptionList(NewsletterUtil.convertParagraphs(ttextt)));
jsonarray.put(obj);