简体   繁体   中英

Pass data from one jsp to another and display that jsp view

Hey i am a php developer and this is my first go with jsp. Now i retrieved a Json string from my class and converted it into GSON. I display a field in my result.jsp for eg:- ID and on clicking the id it should go to details.jsp and show more info about that ID

Currently my result.jsp is as follows:-

<html>
<body>
     <div class="list-group">
                <% 
                   String json = (String)request.getAttribute("jsonstring");
                    Gson gson = new Gson();
                    ConCom diff = new ConCom();
                    diff = gson.fromJson(json, ConCom.class);
                    List<ComparisonResultDTOarr> ls = diff.getComparisonResultDTOarr();

                    for(int i = 0;i<ls.size();i++)
                    {
                        List<AuditItemLogsDTOArr> lsinner = ls.get(i).getAuditItemLogsDTOArr();
                        %><a href="#" class="list-group-item">
                        <%out.println(lsinner.get(0).getKeyAsString());%></a><%
                    }
                    %>
                  </div>
</body>
</html>

I read around SO and googled it and understood that that i could make a hidden form. Now I create a form with the following two fields and using the anchor tag i submit the form. But the values in the form need to be posted according to the ID clicked, how can i make that dynamic?

So if my form is as follows:-

<form action="details.jsp" method="post">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="phone">
</form>

And my details.jsp will be like:-

<%= request.getParameter("firstname") %>
<%= request.getParameter("phone") %>

I want the firstname and phone to be set according to the ID clicked and the form to be submitted. I can obtain the String/Integer value from my diff object in this page. Would i need to use JQuery? Any help?

Also i know i should be using JSTL. And i will get to that soon. Thank you.

You could call a javascript function during the onclick event of your anchor tag:

    <a href="#" onclick="submitHiddenForm("<%=lsinner.getFirstName()%>", "<%=lsinner.getPhone()%>");">...

Your JS function would like like:

   function submitHiddenForm(firstName, phone) {

       document.getElementById("firstname").value = firstName;
       document.getElementById("phone").value = phone;
       // attach a name attribute to your form tag
       // submit the form
       document.myForm.submit();
   }

I hope this helps.

EDIT: changed diff to lsinner, since that's the var used in the loop.

On click of the ID call a javascript function passing the values inside the function you can dynamically set the values of the form by getting each element like document.getElementById("firstname").value=value passed similarly set the other fields and in the end document.myform.submit();

Note since we are fetching HTML elements by Id you can use

<form action="details.jsp" method="post" name="myform">
First name: <input type="hidden" name="firstname" id="firstname"><br>
Last name: <input type="hidden" name="phone" id="phone">
</form>

type="hidden" will hide the elements. check these for better understanding.

How to submit a form using javascript?

If you have the diff object in details.jsp as well, it should be enough to pass only the ID as a parameter, in a normal link.

<a href="details.jsp?id=<%= id %>">details</a>

You'd probably do the same in PHP.

JQuery is client side JavaScript and not required to solve your problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM