Java 我无法使用JsonArray获取Servlet中的列表值
我使用JSON数组从Servlet中的Db获取值。我正在起诉以下代码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
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);