Form processing in JSP with array elements

Is there a class or object in JSP (No beans JSP only) I can call to reference a HTML Form and its elements. I want to perform database insert using data from an dynamically generated form. The form will generate N rows (based on parameters pass from the previous page) and I want to perform N inserts into a database based on the data from the N rows.
I've done something similar in javascript, using the document.form[0].elements[j]value to pass data within a for loop running form[0].elements.length times.
[email protected]
ku916
Thanks

I may not understand your question correctly. I assume that you already have the code to generate the html form, you just need code to access entered values once the form is submitted right?
One way you can do this is to use the request.getParameterNames method. This would be easiest if there is only one entry field per row. For instance if you have N text boxes on your page, and the form is submitted, you can use request.getParameterNames to get an iterator of all the names of the text boxes. You can use this iterator to get all the values. Notice that the name of the fields here is irrelevant.
Enumeration names = request.getParameterNames();
while (names.hasNext()) {
String curVal = (String) names.nextValue();
//--- insert record for curVal
If there are multiple entry fields for each row, its slightly more difficult. I can recommend one approach. Name all the fields with a naming scheme.
The first field in the first row would be 1Field1, the second field in the first row would be 1Field2, etc. The first field in the second row would be 2Field1, the second field in the second row would be 2Field2, etc. Then its just a matter of using two for loops in your next JSP to iterate over all the records and fields. You might make it easy for yourself by writing the number of rows in a hidden field on the form. The insertion might look like this:
int numRows = Integer.parseInt(request.getParameter("numRows"));
for (int i = 0; i < numRows; i++) {
String sql = "some sql...";
for (int j = 0; j < fieldNum; j++) {
sql += request.getParameter(i + "Field" + j);
//-- perform insert
My sql generation is horridly abbreviated but hopefully you get the idea.
I am sure there are other ways to do this, maybe this will work or get you thinking.

Similar Messages

  • A basic question/problem with array element as undefined

    Hello everybody,
    thank you for looking at my problem. I'm very new to scripting and javaScript and I've encountered a strange problem. I'm always trying to solve all my problem myself, with documentation (it help to learn) or in the last instance with help of google. But in this case I am stuck. I'm sure its something very simple and elementary.
    Here I have a code which simply loads a text file (txt), loads the content of the file in to a "var content". This text file contents a font family name, each name on a separate line, like:
    Albertus
    Antenna
    Antique
    Arial
    Arimo
    Avant
    Barber1
    Barber2
    Barber3
    Barber4
    Birch
    Blackoak ...etc
    Now, I loop trough the content variable, extract each letter and add it to the "fontList[i]" array. If the character is a line break the fontList[i] array adds another element (i = i + 1); That's how I separate every single name into its own array element;
    The problem which I am having is, when I loop trough the fontList array and $.writeln(fontList[i]) the result in the console is:
    undefinedAlbertus
    undefinedAntenna
    undefinedAntique
    undefinedArial ...etc.
    I seriously don't get it, where the undefined is coming from? As far as I have tested each digit being added into the array element, I can't see anything out of ordinary.
    Here is my code:
    #target illustrator
    var doc = app.documents.add();
    //open file
    var myFile = new File ("c:/ScriptFiles/installedFonts-Families.txt");
    var openFile = myFile.open("r");
    //check if open
    if(openFile == true){
        $.writeln("The file has loaded")}
    else {$.writeln("The file did not load, check the name or the path");}
    //load the file content into a variable
    var content = myFile.read();
    myFile.close();
    var ch;
    var x = 0;
    var fontList = [];
    for (var i = 0; i < content.length; i++) {
        ch = content.charAt (i);
            if((ch) !== (String.fromCharCode(10))) {
                fontList[x] += ch;
            else {
                x ++;
    for ( i = 0; i < fontList.length; i++) {
       $.writeln(fontList[i]);
    doc.close (SaveOptions.DONOTSAVECHANGES);
    Thank you for any help or explanation. If you have any advice on how to improve my practices or any hint, please feel free to say. Thank you

    CarlosCantos wrote an amazing script a while back (2013) that may help you in your endeavor. Below is his code, I had nothing to do with this other then give him praise and I hope it doesn't offend him since it was pasted on the forums here.
    This has helped me do something similar to what your doing.
    Thanks again CarlosCanto
    // script.name = fontList.jsx;
    // script.description = creates a document and makes a list of all fonts seen by Illustrator;
    // script.requirements = none; // runs on CS4 and newer;
    // script.parent = CarlosCanto // 02/17/2013;
    // script.elegant = false;
    #target illustrator
    var edgeSpacing = 10;
    var columnSpacing = 195;
    var docPreset = new DocumentPreset;
    docPreset.width = 800;
    docPreset.height = 600;
    var idoc = documents.addDocument(DocumentColorSpace.CMYK, docPreset);
    var x = edgeSpacing;
    var yyy = (idoc.height - edgeSpacing);
    var fontCount = textFonts.length;
    var col = 1;
    var ABcount = 1;
    for(var i=0; i<fontCount; i++) {
        sFontName = textFonts[i].name;
        var itext = idoc.textFrames.add();
        itext.textRange.characterAttributes.size = 12;
        itext.contents = sFontName;
        //$.writeln(yyy);
        itext.top = yyy;
        itext.left = x;
        itext.textRange.characterAttributes.textFont = textFonts.getByName(textFonts[i].name);
        // check wether the text frame will go off the bottom edge of the document
        if( (yyy-=(itext.height)) <= 20 ) {
            yyy = (idoc.height - edgeSpacing);
            x += columnSpacing;
            col++;
            if (col>4) {
                var ab = idoc.artboards[ABcount-1].artboardRect;
                var abtop = ab[1];
                var ableft = ab[0];
                var abright = ab[2];
                var abbottom = ab[3];
                var ntop = abtop;
                var nleft = abright+edgeSpacing;
                var nbottom = abbottom;
                var nright = abright-ableft+nleft;
                var abRect = [nleft, ntop, nright, nbottom];
                var newAb = idoc.artboards.add(abRect);
                x = nleft+edgeSpacing;
                ABcount++;
                col=1;
        //else yyy-=(itext.height);

  • Payroll Run processing error out with PTO element

    I have created new payroll and trying to process first payroll of employee but when we are processing with PTO element it is getting error out below error.
    UDF Error in formula PTO_NONEXEMPT_VACATION_ORACLE_PAYROLL at line 45: Value exceeded allowable range (line 133 of XXRAC_PTO_HD_ANNIVERSARY_BALANCE)
    Thank You
    Nitin Maheshwari

    Benjamin,
                   there are several ways to reprocess the structure of a SSAS 2005 object.
                   In my example I use an SSIS 2005 processing task in an ETL package, but the simplest way is:
                   Log on to the database using SQL Server Management Studio 2005; Open the cubes tree under your database, and right-click one of the cubes; Choose "Process" from the context menu and then another window will open. This window should show your cube name and then some options; Under "Process Options", change the default option (I think it's "Process Full") to "Process Structure". Click "OK" and the structure of your cube should be reprocessed, correcting the error.
                   Some observations: You might have to do this first for all the dimensions, because the cubes depend on them, and you also might have to do it one object at a time through this method. Through an SSIS 2005 package, you are able to do this in batch using a special SSAS processing task.
                   Let me know if you solved your problem.
    Bruno

  • Best way to iniitialize a queue with array elements

    Hi Guys
    I'm looking for a bit of performance optimization..  
    I'm developing a noise measurement application using LV8.6 and Win Xp /Win 7.
    To put it very simple I have a loop that samples, and a loop that does the math. data is shipped in a queue, producer / consumer style.
    So far so good.. Question is - is there a specific and more optimized way to declare this queue?
    I was wondering if declaring the queue with an initialized array element of a fixed size (the number of samples pr. read from the sound card will be known at runtime) would produce a queue that would be less heavy on dynamic allocation of memory compared to a queue obtained using a simple control no values.
    I've attached a screen dump to maybe make the question more obvious..
    I've been thru the "clear as mud" thread, as recommended in other threads that covers this topic - but i gets very high tech, and I kind of lost my way in it.. So looking for a more simple "you should use solution #x, because..."
    Thank you in advance. 
    Solved!
    Go to Solution.

    I believe (but am not sure) RT FIFOs will allocate this memory for you ahead of time. But, remember they are not deterministic on windows. You need to wire an array constant of the correct size into the FIFO read function also to avoid memory allocation, which is easy to overlook. It's worth looking into, if nothing else, assuming you have RT functions available. WIth this method, the queue size needs to be set, and you run the risk of overflowing and losing elements if not handled correctly. 
    Just throwing other options out there.
    CLA, LabVIEW Versions 2010-2013

  • Comparing a String with array elements

    i need some help as to how to compare an individual String with each item of a String array.
    so far i have:
    StringTokenizer drinksOrder = new StringTokenizer(orderLine, "\r");
    while (drinksOrder.hasMoreTokens())
         for (int index = 0; index < NUMBER_OF_DRINKS; index++)
                 barcode = drinksOrder.nextToken();
                        if (barcode.equals(barcodes[index]))
                                     name = drinks[index];
                                     price = prices[index];
                                     status = drinkStatus[index];
              orderedDrinkBC[j] = barcode;
                                              orderedDrinkName[j] = name;
                                              orderedDrinkPrice[j] = price;
                                              orderedDrinkStatus[j] = status;
              j++;
              break;
    [\CODE]
    At the moment, no Strings are being put in the orderedDrinkBC, orderedDrinkName, orderedDrinkPrice
    and orderedDrinkStatus arrays. the code seems to be failing on the 'barcode.equals(barcodes[index])
    part at the moment.
    any help would be appreciated
    cheers
    david                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Do this instead (next time post your code in lower case code tags):
    StringTokenizer drinksOrder = new StringTokenizer(orderLine, "\r");
    while (drinksOrder.hasMoreTokens())
      barcode = drinksOrder.nextToken();
      for (int index = 0; index < NUMBER_OF_DRINKS; index++)
        if (barcode.equals(barcodes[index]))
          name = drinks[index];
          price = prices[index];
          status = drinkStatus[index];
          orderedDrinkBC[j] = barcode;
          orderedDrinkName[j] = name;
          orderedDrinkPrice[j] = price;
          orderedDrinkStatus[j] = status;
          j++;
          break;
    }

  • JSP/Servlet form processing problem - please help

    I'm using the apache.commons.fileupload library to process a form that will ultimately insert an image into an Oracle database. At the moment, I'm not even at the database stage although I have code to do it. I'm just trying to validate that all the form fields are filled out. A JSP page posts a form to a Servlet which then checks that each field contains something. If the field is null/empty, then I use a RequestDispatcher object to forward back to the JSP with the form on it.
    Here is the problem... If I intentionally leave the form empty then the Servlet does indeed send the user back to the JSP. However, if I then complete all fields in the form after being returned to the JSP and submit the form, I am forwarded back to the JSP rather than executing the next statement in the Servlet. It's as though once I have filled out the form the null entries are being retained and the new entries are being ignored.
    Can anyone help? Perhaps I am not understanding the request/response model properly as I am used to PHP programming?

    Can you double check? Suppose you just go to the JSP. Fill in all the fields as you did before. Submit the form. Does it go to the next statement in the servlet?

  • Hi, I got my Mac in 2009 with photoshop elements on it - it's recently been wiped, however before the process we put Photoshpp onto a hard drive, we then copied it back over and it no longer works, I'm getting error code 150:30 and I'm being asked for a p

    Hi, I got my Mac in 2009 with photoshop elements on it - it's recently been wiped, however before the process we put Photoshop onto a hard drive, we then copied it back over and it no longer works, I'm getting error code 150:30 and I'm being asked for a password... any ideas how to get it working again?

    You can never, never migrate an installed copy of PSE. It's just too complex and you can't get to all the bits and bobs.
    First you will have to download and run this:
    Use the CC Cleaner Tool to solve installation problems | CC, CS3-CS6
    which will not seem to do anything, but is necessary to break the links within PSE so that you can pitch the bits manually. Then you will have to go around, not only to applications, but also to your username>library>preferences and most importantly to the library at the top level of your hard drive>application support>adobe, and remove everything you can find. Spotlight will not help with this kind of search, so don't try that.
    Then you can install PSE from scratch.

  • How to create array with "n" elements...

    Hy, how can i create a array with "n" elements ?

    i know, but the thing is: the other methode (which
    one isn't developed fom me) needs an Object Array
    (Object []) to work correctly...then take a look into the method toArray() of the Collection interface.
    thats why i need this gay "object Array"....I think it would be wise to avoid that adjective in this context and meaning.

  • Trying to use .split with an array element

    I have tried multiple ways to split an array element into its components that are separated with a space with this code:
    public static void compareHand(String[] hand){
            for (int i = 0; i < hand.length; i++){
                System.out.println(i);
                System.out.println(hand);
    String[] tokens = hand[i].split("\\s");
    System.out.println(tokens.length);
    for (int j = 0; j < tokens.length; j++){
    System.out.println(tokens);
    I keep getting strange output like the following:
    King of Spades
    3
    [Ljava.lang.String;@10b62c9
    [Ljava.lang.String;@10b62c9
    [Ljava.lang.String;@10b62c9
    where I am expecting:
    King of Spades
    3
    King
    of
    Spades
    Any ideas where I am going wrong?

    public static void compareHand(String[] hand){
             for (int i = 0; i < hand.length; i++){
                  System.out.println(i);
                  System.out.println(hand);
    String[] tokens = hand[i].split("\\s");
    System.out.println(tokens.length);
    for (int j = 0; j < tokens.length; j++){
    System.out.println(tokens); // your error is on this line. Hint ... System.out.println(tokens[...]);

  • Error updating Process Form: Same Column exist with a different variant

    Hi All,
    I have a process form of a resource with following fields :
    Name VariantType Length FieldLabel FieldType Order
    UD_EDIR_BWUSER   boolean       1          BWUser    Checkbox      25
    UD_EDIR_ISUUser    boolean       1          ISUUser    Checkbox      26
    Now, I have to changes these field from boolean to string. For that, I created a new process form version and update like this:
    1. Delete these fields first.
    2. Add two new fields:
    UD_EDIR_BWUSER String 4 BWUser Textfield 25
    UD_EDIR_ISUUser String 4 ISUUser Textfield 26
    Now, when I tried saving the form, I got following error
    Same Column exist with a different variant in current or previous form.
    I also tried creating again a new version of process form and tried updating these field instead of re-creating them but I was able to update the FieldType only ( not able to update the Variant type and length).
    If anyone know how to resolve this issue, please reply.
    Cheers,
    Sunny

    Hi Rajiv,
    Thanks for the reply. I re-created these field in a new version but gave a different name this time like this:
    UD_EDIR_SAP_BW_USER String 4 SAPBWUser TextField 25
    UD_EDIR_SAP_ISU_USER String 4 SAPISUUser TextField 26
    and it worked for me.
    Cheers,
    Sunny

  • Sort array with equal elements

    Hi, I'm a new one.
    I have a problem to sort 2d array with equal elements (it has 5000000 of elements from 1-255) for example:
    1 2 1 1 3 4 5 5 6 1 2 3 (value from 1-255)
    2 2 1 1 3 3 3 3 4 4 4 1 (value from 1-255)
    And I need make array or matrix 255 rows vs 255 colomns, and count how many equal elements for example:
      1  2 3 4 5 6
    1 0 1 0 1 0 0
    2 0 1 0 1 0 0
    3 1 0 1 0 0 0 
    4 0 0 1 0 0 0
    5 0 0 2 0 0 0
    6 0 0 0 1 0 0
    I'll be happy if someone could help me

    I understand that it's very complicated explain.
    I build 2d array from two 1darray each of them has values 1-255. So right now i must constract array or matrix 255x255 where must calculat how many times value from (1-255) for one array in another array and write this sum for each value 1-255. I try to show it
    1 2                         so I need array 3x3; for first row for value 1 I have two times value 3 and one time value 2
    2 2                                                                                    2 I have two times value 1 and one time value 2 and one time value 3
    3 2                                                                                    3 I have two times value 2 and one time value 3 
    3 2              so my result matrix will be      1   2  3
    3 3                                                       1  0  1  2
    2 3                                                       2  2  1  1
    2 1                                                       3  0  2  3
    2 1
    1 3
    1 3
    Maybe its more clear

  • Write an 1d-array of cluster with 3 elements

    Hi,
    I have to make a "Power spectral densities" analyse from my waveform data. The results from this VI is an array of cluuster with 3 elemments. Now I want to write this array of cluster with 3 elements to a file. And later it must be able to use this file with EXCEL!!
    thanks

    Hi
    I found some outer Forum entries about this topic.
    Look at this links:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=49553&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=51526&requireLogin=False
    I hope this helps
    Manuel

  • Reference to Array of Clusters with an array element

    Hi,
    I have an array of clusters CONTROL (calling it as "top level cluster array") with one of the cluster elements being a cluster array (please see attached).
    I plan to pass "Reference" of this top level cluster to different VIs (like add element VI, insert element VI, delete element VI etc) and access (add/modify delete) the elements in this array.
    In my code, how do I typecast the Array Element (cluster) to the inner cluster (as shown in the figure) ?
    I am using LV RT on PXI.
    Solved!
    Go to Solution.

    You cannot use references in the same way that you use pointers around in C. LabVIEW does not manage memory in the same way that C does. This is actually a good thing, though C programmers find it "cumbersome" or "restrictive". I have also programmed in C, and frankly I prefer LabVIEW's memory management any day of the week.
    You had not initially mentioned that this was going to be done in multiple places at (potentially) the same time. Given that, my recommendation is to look into using Action Engines. They provide a means of basically providing a one-location acccess for your data. By using a single VI to access/modify your data you preclude the generation of race conditions. You may also want to join this with the concept of using variants to provide a means to quickly find your data rather than looping to find the element you're interested in. This technique has been around for a while and it has been discussed before. There are examples floating around. Will need to check to find one. 
    As for your question regarding using the reference method which you tried to employ in your initial approach, that's simply not going to gain you anything. You will still be creating buffers when you try to access the cluster elements. But you already have this information in the array inside the outer for loop, so you're just creating unnecessary extra programming for yourself. 

  • How can I write a 1d array of cluster with 3 elements to a file?

    Hi,
    I have to make a "Power spectral densities" analyse from my waveform data. The results from this VI is an array of cluuster with 3 elemments. Now I want to write this array of cluster with 3 elements to a file. And later it must be able to use this file with EXCEL!!
    thanks

    Hello schloronzo,
    make a for loop feeded with your array. Inside the for loop unbundle
    the cluster, "format into string" the 3 values, adding the result to
    the ones before and collect them in a shift register. Then save the
    resulting string to a txt-file. If you make a good format string then
    Excel is able to read your txt-file (use tab a separator and CR/LF
    after each 3 values aka "csv format").
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

  • Write 1d array of cluster with 2 elements to file

    HI!
    I'm new at LabView so I hope the question is very simple to you:
    I am using a waveform graph to display several measurements.
    Now I want to save these Measuremens. The data are stored in 1d array of cluster with 2 elements.
    What is the easiest way to do this??
    Thanks

    If you are already using waveforms you can simply wire right up to "Write Waveforms to File.vi" in the Waveform palette under Waveform File I/O.
    Daniel L. Press
    PrimeTest Corp.
    www.primetest.com

Maybe you are looking for