简体   繁体   中英

how to pass a java variable to javascript

I want to pass a java variable to javascript in away I donot have body tag in my jsp page then I cann't pass it this way :

<body onload="start(<%=otp1%>);">

and I need to run this javascript onload. is there anyother way to pass java variable to javascript? how can I do that?

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<%
    String otp1 = (String) session.getAttribute("chartResult");
%>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Flot Examples: Basic Usage</title>

    <link href="../theme/bower_components/flot/examples/examples.css" rel="stylesheet" type="text/css">
    <%--   <link href="../theme/bower_components/flot/examples/examplesrtl.css" rel="stylesheet" type="text/css">--%>
    <%--    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../theme/bower_components/flot/excanvas.min.js"></script><![endif]-->--%>
    <script language="javascript" type="text/javascript" src="../theme/bower_components/flot/jquery.js"></script>
    <script language="javascript" type="text/javascript" src="../theme/bower_components/flot/jquery.flot.js"></script><!-- jQuery -->
    <style type="text/css">
        body {
            font: 11px/1.1em "proxima-nova", Helvetica, Arial, sans-serif;
        }

        h2 {
            margin-top: 0;
        }
    </style>

   <script type="text/javascript" >
             function start(otp1){

                var d1 = [];
                for (var i = 0; i < 14; i += 0.5) {
                    d1.push([i, Math.sin(i)]);
                }

                var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];

                // A null signifies separate line segments

                var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];

                $.plot("#placeholder", [ d1, otp1, d3 ]);

                // Add the Flot version string to the footer

                $("#footer").prepend("Flot " + $.plot.version + " &ndash; ");
        }

    </script>


<div id="header" >
    <h2>Basic Usage</h2>
</div>

<div id="content" >
    <div class="demo-container">
        <div id="placeholder" class="demo-placeholder"></div>
    </div>

    <p>You don't have to do much to get an attractive plot. Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.</p>

    <p>The axes are automatically scaled.</p>

</div>



<div id="footer">
    Copyright &copy; 2007 - 2014 IOLA and Ole Laursen
</div>

Javascript gets executed on client side and java on server side. So once jsp/html page is getting loaded on browser from server you can do that.

You can do it in jsp file but not in js file as jsp file gets processed on server side before presenting it as html to browser whereas js file is executed on client side so java code won't be processed

Assuming otp1 is set as request attribute on server side, you can access it on jsp like below which is much cleaner and readable

${requestScope.otp1}

Use :

var jsVar="<%out.print(otp1);%>";

in your javascript

You can assing that Java value at the beginning of your script tag on the page:

var value = <%=otp1%>;

or, if the value is String:

var value = "<%=otp1%>";

You can put the variable in a hidden field or like slomek suggested directly in js. As a replacement for the onload-Method you can use jqueries ready Method. See: https://api.jquery.com/ready/

use inline script for example:

 <script type="text/javascript" >

                var d1 = [];
                for (var i = 0; i < 14; i += 0.5) {
                    d1.push([i, Math.sin(i)]);
                }

                var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];

                // A null signifies separate line segments

                var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];

                $.plot("#placeholder", [ d1, <%=otp1%>, d3 ]);

                // Add the Flot version string to the footer

                $("#footer").prepend("Flot " + $.plot.version + " &ndash; ");

    </script>

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