1

I have a successful ajax that takes an array of urls e.g. "www.asd.com,www.efuief.com" and POSTs to my generate servlet. I can see the array string when i alert it during the ajax javascript file. I can see that POST to generate servlet occurs from the browser network tab.

The array is passed to my generate serlvet and there I want to

a) view the contents of the array , but i'm not sure how. i have some system.out.printlns but they don't seem to do anything when i run the webpage and click the button.

b) take the contents of the array and (if they are not already a string) then parse them into a java arraylist . a website gave me (rather longwinded) methods to do this where i convert the array to a List (object?) then the List to an ArrayList String

c) lastly i want to feed the Array to my imageController which tries to loop through the arraylist. HOWEVER, it gives me the message "object cannot be converted to string" , indicating that something hasn't worked down the line?

The code is pretty long but i think the problem areas are very distinct (i commented the two suspect areas). If you could take a look that would be amazing. If anything, maybe you could tell me how I can print these values to my screen somehow since my system.out.println thing isn't activating....

Thankyou

Ajax (should be working...)

$(document).ready(function () {
    $('#button').click(function () {

        var array = [];

        $('#sortable2 .selectedItemImg').each(function () {

            array.push($(this).attr('src'));
        });

      alert(array);

        $.ajax({
            url: 'generate',
            type: 'POST',
            dataType: 'array',
            data: (array),

            success: function (data) {
//                alert("test44");
            }

// send url to user
// 
//
        }
        );
    });
    return false;
    }
    );

Servlet

 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package main;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author J
 */
@WebServlet(name = "ImageGenerationServlet", urlPatterns = {"/generate"})
public class ImageGenerationServlet extends HttpServlet {



    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ImageGenerationServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ImageGenerationServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);


        // THESE PARTS DONT APPEAR TO WORK!! :)

        List imageList = Arrays.asList(request.getParameter("button"));

        System.out.println(imageList);

        ArrayList <String> imageURLs = new ArrayList(Arrays.asList(imageList));

        System.out.println(imageURLs);

        ImageController imgc = new ImageController(imageURLs);




         // 1) retrieve array of urls
         // 2) send to imagegenerationcontroller
         // 3) send to uploadcontroller
         // 4) retrieve and parse the json response to get the imgur url
         // 5) response from here to user


    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

ImageController (do stuff with the string , except it doesnt appear to have been turned into a string)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package main;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

/**
 *
 * @author J
 */
public class ImageController {

//int roundUp(int numToRound, int multiple) 
//{ 
// if(multiple == 0) 
// { 
//  return numToRound; 
// } 
//
// int remainder = numToRound % multiple;
// if (remainder == 0)
//  return numToRound;
// return numToRound + multiple - remainder;
//}

    int roundUp(int numToRound, int multiple) {
    return (numToRound+multiple-1) / multiple;
}

public ImageController(ArrayList imageURLs) throws IOException

  {



//      ArrayList <String> imageURLs = new ArrayList<>();

//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");

//Integer totalHeight= 300*((Math.round(imageURLs.size()/6)));

//Integer totalHeight = imageURLs.size()*300/4;


//Integer totalHeight = 300*(roundUp(imageURLs.size(), 4));

Integer totalHeight = (roundUp(imageURLs.size(),4))*200;

System.out.println(imageURLs.size());
System.out.println(totalHeight);

// height = numberofentries / 4 rounded up to the nearest multiple of 4

// height = numberofentries rounded up to the nearest 4, divided by 4, times 300px

//Double heightMath= 300*(4*(Math.ceil(Math.abs(imageURLs.size()/4.0))));

//Long heightMath= 300*(long)Math.floor(imageURLs.size() + 1d);

//Integer totalHeight = (int) (double) heightMath;

//if (totalHeight < 300){ 
//      totalHeight = 300; 
//  }

BufferedImage result = new BufferedImage(
                               736, totalHeight, //work these out
                               BufferedImage.TYPE_INT_RGB);

Graphics g = result.getGraphics();

Integer x = 0;
Integer y = 0;



//THIS SAYS "OBJECT CANNOT BE CONVERTED TO STRING!"
// IT SHOULD HAVE BEEN PARSED INTO AN ARRAYLIST<STRING> ALREADY?

for(String imageURL : imageURLs){

        BufferedImage bi = ImageIO.read(new File(imageURL));
        g.drawImage(bi, x, y, null);
        x += 184;
        if(x >= result.getWidth()){
            x = 0;
            y += bi.getHeight();
        }

          ImageIO.write(result,"png",new File("C:\\Users\\J\\Desktop\\resultimage.jpg"));
    }
}
}

Editing in all my files (updated versions):

Index jsp

<%@page language ="java" contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Anime List Creator</title>

        <script src="webresources/jquery-2.1.3.min.js"></script>
        <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>-->
        <script src="webresources/basic.js"></script>
<script src="webresources/submitList.js"></script>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
        <!--<link rel="stylesheet" href="/resources/demos/style.css">-->
        <style>

            body {
                background-color: #ffffff;
            }

            #sortable1 {
                /*                border: 1px solid #eee;
                                width: 142px;
                                min-height: 20px;
                                list-style-type: none;
                                margin: 0;
                                padding: 5px 0 0 0;
                                float: left;
                                margin-right: 10px;*/

                list-style-type: none; padding: 0px; width: 926px; border-style: solid; border-width: 2px; min-height: 310px; float: left; background-color: #e9e9e9; max-height: 1240px; overflow: auto;
            }

            #sortable2 {
                /*                border: 1px solid #eee;
                                width: 142px;
                                min-height: 20px;
                                list-style-type: none;
                                margin: 0;
                                padding: 5px 0 0 0;
                                float: left;
                                margin-right: 10px;*/

                list-style-type: none; padding: 0px; width: 926px; margin-left: 30px; border-style: solid; border-width: 2px; min-height: 310px; float: left; background-color: #7fc1ff;
            }


            #sortable1 li, #sortable2 li {
                /*                margin: 0 5px 5px 5px;
                                padding: 5px;
                                font-size: 1.2em;
                                width: 120px;*/

                margin: 10px 0px 45px 10px; padding: 0px; width: 216px; height: 300px; font-size: 16px; text-align: center; float: left; color: white; border-style: none; font-family: Geneva,Tahoma,Verdana,sans-serif;
            }





        </style>
        <script>
            $(function () {
                $("#sortable1, #sortable2").sortable({
                    connectWith: ".connectedSortable"
                }).disableSelection();
            });
        </script>

        <script>


//            $("#button").click(function() {
//
////            function loop() {
////            alert()
////                    $('#sortable2 .row.selected img').each(function() {
////            alert($(this).attr('src'))
////            })
//
//alert("hi");

//$(document).ready(function() {
//  $("#button").click(function () {
//    alert("Hello1");


//        $('#sortable2 .selectedItemImg').each(function() {
//$('img.selectedItemImg').each(function() {
//        alert(this.src);

//    $('.userList .selectedItemId .selectedItemImg img').each(function() {
//    $(".userList").each(function() {
//        $('.userList').find('#textid');
//        alert($('.userList id img'));
//        alert($(this).attr.div($(this).attr("id")));
//        alert($(this).attr("id"));
//        alert($(this).attr("src"));
//        alert("Hello2!");
//            });
//  });




        </script>


<!--        <script src="${page.request.contextPath}/webresources/jquery-2.1.3.min.js"></script>
        <script src="${page.request.contextPath}/webresources/basic.js"></script>-->


        <!--<link rel="stylesheet" href="webresources/css/basic.css" type="text/css" media="screen"/>-->
    </head>

    <body background-color:black;>
          <h1>Anime List Creator</h1>

        <form id="searchForm">
            <label for="searchQuery">Make a search</label>
            <input type="text" id="searchQuery" name="searchQuery"/>
            <input type="submit"/>
        </form>

        <div id="searchContainer1"></div>




        <!--<p id="displaySearchResults"><p/>-->

        <!--        <div id="searchContainer1"
                <p id="displaySearchResults1"><p/>
                <p id="displaySearchResults2"><p/>
                <p id="displaySearchResults3"><p/>
                </div>-->


        <hr/>

        <ul id="sortable1" class="connectedSortable">
            <!--            <li class="ui-state-default">Item 1</li>
                        <li class="ui-state-default">Item 2</li>
                        <li class="ui-state-default">Item 3</li>
                        <li class="ui-state-default">Item 4</li>
                        <li class="ui-state-default">Item 5</li>-->
        </ul>

        <ul id="sortable2" class="connectedSortable">
            <!--            <li class="ui-state-highlight">Item 1</li>
                        <li class="ui-state-highlight">Item 2</li>
                        <li class="ui-state-highlight">Item 3</li>
                        <li class="ui-state-highlight">Item 4</li>
                        <li class="ui-state-highlight">Item 5</li>-->
        </ul>

        <hr/>

        <button id="button" name="button">Save List</button>

    </body>
</html>

Image servlet

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package main;

import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author J
 */
@WebServlet(name = "ImageGenerationServlet", urlPatterns = {"/generate"})
public class ImageGenerationServlet extends HttpServlet {



    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ImageGenerationServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ImageGenerationServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);


        // THESE PARTS DONT APPEAR TO WORK!! :)

//        List imageList = Arrays.asList(request.getParameter("button"));
//        
//        System.out.println(imageList);
//         
//        ArrayList <String> imageURLs = new ArrayList(Arrays.asList(imageList));
//        
//        System.out.println(imageURLs);

//         ArrayList <String> imageURLs = new ArrayList(request.getParameter("button"));

//        String postResponse = request.getParameter("button");

//        ArrayList<Map> imageMap = new ArrayList<Map>();

//        String[] urls1 = postResponse.split(",");


//        ImageController.controlImage(urls1);

        List<String> imageURLs = new ArrayList<String>();
try {
    BufferedReader reader = request.getReader();
    String line;
    do {
        line = reader.readLine();
        imageURLs.add(line);

    } while (line != null);
}catch(Exception e){};

//int size = imageURLs.length();

        ImageController.controlImage((ArrayList<String>) imageURLs);


         // 1) retrieve array of urls
         // 2) send to imagegenerationcontroller
         // 3) send to uploadcontroller
         // 4) retrieve and parse the json response to get the imgur url
         // 5) response from here to user


    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Image controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package main;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;

/**
 *
 * @author J
 */
public class ImageController {

//int roundUp(int numToRound, int multiple) 
//{ 
// if(multiple == 0) 
// { 
//  return numToRound; 
// } 
//
// int remainder = numToRound % multiple;
// if (remainder == 0)
//  return numToRound;
// return numToRound + multiple - remainder;
//}





public static void controlImage(ArrayList<String>imageURLs ) throws IOException

  {



//      ArrayList <String> imageURLs = new ArrayList<>();

//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");
//imageURLs.add("C:\\Users\\J\\Desktop\\test5.jpg");


//Integer totalHeight= 300*((Math.round(imageURLs.size()/6)));
//
//Integer totalHeight = imageURLs.size()*300/4;
//
//Integer totalHeight = 300*(roundUp(imageURLs.size(), 4));

//      int arraySize = imageURLs.length();

Integer totalHeight = (roundUp(imageURLs.size(),4))*200;


//System.out.println(imageURLs.size());
//System.out.println(totalHeight);

// height = numberofentries / 4 rounded up to the nearest multiple of 4

// height = numberofentries rounded up to the nearest 4, divided by 4, times 300px

//Double heightMath= 300*(4*(Math.ceil(Math.abs(imageURLs.size()/4.0))));

//Long heightMath= 300*(long)Math.floor(imageURLs.size() + 1d);

//Integer totalHeight = (int) (double) heightMath;

//if (totalHeight < 300){ 
//      totalHeight = 300; 
//  }

BufferedImage result = new BufferedImage(
                               736, totalHeight, //work these out
                               BufferedImage.TYPE_INT_RGB);

Graphics g = result.getGraphics();

Integer x = 0;
Integer y = 0;



//THIS SAYS "OBJECT CANNOT BE CONVERTED TO STRING!"
// IT SHOULD HAVE BEEN PARSED INTO AN ARRAYLIST<STRING> ALREADY?

for(String imageURL :  imageURLs){

        BufferedImage bi = ImageIO.read(new File(imageURL));
        g.drawImage(bi, x, y, null);
        x += 184;
        if(x >= result.getWidth()){
            x = 0;
            y += bi.getHeight();
        }

          ImageIO.write(result,"png",new File("C:\\Users\\J\\Desktop\\resultimage.jpg"));
    }
}

    private static int roundUp(int numToRound, int multiple) {
    return (numToRound+multiple-1) / multiple;
}

}

SubmitList ajax

$(document).ready(function () {
    $('#button').click(function () {

        var array1 = [];

        $('#sortable2 .selectedItemImg').each(function () {

            array1.push($(this).attr('src'));
        });

      alert(array1);

        $.ajax({
            url: 'generate',
            type: 'POST',
            dataType: 'json',
            data: (array1),

            success: function (data) {
//                alert("test44");
            }

// send url to user
// 
//
        }
        );
    });
    return false;
    }
    );

The only weird thing I can think of is that I deleted my WEB-INF config file (servlet mapping thing) because it had weird duplicates in it from when i renamed files. My web app stopped working for a while, eventually I just deleted the whole folder and it started working again. So I doubt thats anything to do with anything.

3
  • So, what does the POST data look like? What's the full request? Commented Apr 18, 2015 at 15:50
  • I agree with Boris. I'm not sure 'array' is a valid datatype, so it's probably json. If so, you could use Jackson on the Java side to do the convertion. Commented Apr 18, 2015 at 15:53
  • do you know how i can "look into" then POST to see the data using Chrome? i can click on Network and see : `Generate: Method: POST, Status: 200, Type Text/html . So you could be right there Thankyou both. Commented Apr 18, 2015 at 15:58

1 Answer 1

1

There are a few issues at play here. Note that ArrayList implements List, so you almost never need to convert a List to an ArrayList. In doPost, request.getParameter("button") would get the form or query parameter "button" which you aren't passing in your ajax call. To get the raw POST body, use something like this

List<String> imageURLs = new ArrayList<String>();
try {
    BufferedReader reader = request.getReader();
    String line;
    do {
        line = reader.readLine();
        imageURLs.add(line);
    } while (line != null);

In the ajax call, the dataType "array" is not valid. dataType also specifies what you want back from the server, which will be html if you call processRequest in doPost. You can receive a JSON object that will automatically be converted to a Javascript Object, just plain text as a string, or a few others. The code above already separates each line of the POST body, so the code below will just be sending each URL on a new line for simplicity. You may want to look into JSON parsing in Java if your data gets more complex.

$.ajax({
    url: 'generate',
    type: 'POST',
    contentType: 'text/plain',
    dataType: 'html'
    data: array.join('\n'),
    success: function (data) {
        // data will be html as text
        // This executes only when the request returns successfully.
    }
});

You get the compile error "object cannot be converted to string" because a generic type like ArrayList is implicitly declared as ArrayList when there is no type argument. Look up raw types for more information. To fix the compile error, change the constructor of ImageController to

public ImageController(ArrayList<String> imageURLs)
Sign up to request clarification or add additional context in comments.

5 Comments

thankyou for taking the time to look at this and explain a bit for me. my code is now without "red lines". the problem is i'm not sure how to check if it is working. the only return value i have is for the image generator to save a new image to my disk, and it didnt do that. i dont know how to get things like "system.out.writeline" to appear for web application. the only thing i can see is when i look at chrome's developer console at the POST and see that it says "undefined, undefined, undefined" still. i took a screenshot imgur.com/pxuw2jR
I updated my thread with all my (updated) files in full (including index) . i'm going to take a break then come back. this is a real nightmare right now!
HUGE apologies. i must have got sidetracked half way down your post. i implemented your version of the ajax now
After implementing your parser changes and then your ajax changes I then had to tell my imageWriter to utilise the data in URL form as the data is in the form of hyperlinks. I am so relieved and grateful, thankyou so much , it feels incredibly to finally have this sorted.
@user3474126 You might want to look into RestEasy or Jersey if you'll be making many of these web services. Both make it easy to create web services and can automatically parse JSON or XML requests into Java objects.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.