Solved

Convert Java variable to Javascript variable

Posted on 2007-11-27
8
4,052 Views
Last Modified: 2008-02-01
Hi guys,

This is pretty weird. I'm using BEA workshop 8.1. In my JSP, there is a Javascript which I need to convert a Java variable to Javascript variable.

A section of my codes goes below:

<%
String hsCode = request.getAttribute("hsCode");
System.out.println(hsCode);
%>
var JShsCode = <%=hsCode%>;
alert(JShsCode);

In my console, the hsCode is printed out as 0701, but in my alert box when I load the JSP, JShsCode becomes 449. With each different value of hsCode, the JShsCode value changes .e.g. hsCode 077 will alert me JShsCode 63.

Any ideas on this?

0
Comment
Question by:leon24
  • 5
  • 2
8 Comments
 
LVL 40

Accepted Solution

by:
Richard Quadling earned 300 total points
ID: 20359472
0701 in many languages equates to an octal number - the decimal of which is 449.

Using PHP ...

<?php echo 0701; ?>

outputs ...

449

As both PHP and JS are loosely typed, you can use strings.

<?php echo '0701'; ?>

outputs ...

0701

So try ....
<%
String hsCode = request.getAttribute("hsCode");
System.out.println(hsCode);
%>
var JShsCode = '<%=hsCode%>';
alert(JShsCode);

Open in new window

0
 
LVL 29

Assisted Solution

by:Göran Andersson
Göran Andersson earned 200 total points
ID: 20359498
When you put a zero as the first digit in a numeric literal in Javascript, it's interpreted as an octal number (base 8).

You can either convert the value to a number in the server code, so that it's output into the page without the leading zero, or parse the string with a specific base in the Javascript code:

car JShsCode = parseInt('<%=hsCode%>', 10);
0
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 20359511
Oh. The trigger for an octal number is a leading 0.

You could also left trim all leading zeros.

Not sure on the Java method for that.

You could just read 1 char at a time and convert to a space and then not put the quotes in the JS output.

So, (using _ as a space), 0701 ...

var JShsCode = 0701;

becomes (remember using _ as a space) ...

var JShsCode = _701;


Which removes the octal notation marker.
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 40

Expert Comment

by:Richard Quadling
ID: 20359516
Personally, I would output the correct value from the server rather than getting the client to do the call.
0
 

Author Comment

by:leon24
ID: 20359671
Hi guys,

I've tried using the methods mentioned, I've missed this part out earlier in my question. The hsCode 0701 is a number which the user input, which means it could be 334 or 0802 or 0701 or anything (numeric). And I tried using parseInt, but it doesnt retain the 0 in front, as code 0701 is different from 701.

Any idea?
0
 
LVL 40

Assisted Solution

by:Richard Quadling
Richard Quadling earned 300 total points
ID: 20359699
You say "number" ...

0701 === 449 === 0x1c1

They are the same thing, just different representations.

I think you really mean string.

If so, use the attached snippet.

Don't try to convert the text the user entered.

You may want to validate that the string only contains digits (regex /^[\d]+$/ for example - change + to * to allow blank).
<%
String hsCode = request.getAttribute("hsCode");
System.out.println(hsCode);
%>
var JShsCode = '<%=hsCode%>';
alert(JShsCode);

Open in new window

0
 

Author Comment

by:leon24
ID: 20359700
OK guys I've solved it oredi and using '<%=hsCode%>' works fine and retains the leading 0 in front. You guys are cool s**t!
0
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 20359716
Well, we are Experts anyway!
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
null output 3 25
Scroll 5 news at a time. 4 28
How can i  prevent default  Submision? 6 27
asp.net mvc5 6 17
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question