2010-10-11 61 views
7

Tôi muốn đặt câu hỏi về JSP và Java. Tôi đang viết trang JSP và có một lớp bean. Trong lớp, tôi có một hàm getter sẽ trả về một var kép trong trang jsp. Tôi đã sử dụng mã sau để hiển thị số.Làm cách nào để kiểm soát hiển thị số chữ số trong JSP?

<p> the value of AB is <%=obj.getValue() %> <p> 

Tôi hy vọng màn hình mà sẽ thích sau

the value of AB is 0.45 

Tuy nhiên, màn hình hiển thị thực sự là sau

the value of AB is 0.4569877987 

Tôi chỉ muốn hiển thị hai chữ số cuối cùng. Tôi nên làm gì để hiển thị những gì tôi muốn. Tôi có nên sửa đổi trang JSP hoặc biến lớp Java không? cảm ơn bạn.

Trả lời

6

Bạn có thể sử dụng một DecimalFormat để định dạng giá trị như là một chuỗi, ví dụ như:.

DecimalFormat df = new DecimalFormat("#0.00"); 

(mô hình giả sử bạn luôn muốn hai chữ số ở phần phân đoạn, ngay cả khi phần thập phân là zero Nếu không, sử dụng #0.##)

Tuy nhiên, nói chung, không nên gọi trực tiếp cho các nhà thầu DecimalFormat. Thay vào đó, việc thực hành đề nghị là để gọi một trong những phương pháp nhà máy của NumberFormat, sau đó tùy chỉnh mô hình khi cần thiết, ví dụ:

NumberFormat nf = NumberFormat.getInstance(); 
nf.setMaximumFractionDigits(2); 
nf.setMinimumFractionDigits(2); 

Javadoc bao gồm ví dụ:

Điều này sẽ hoạt động trong trang JSP của bạn:

<%@ page import="java.text.NumberFormat" %> 
<% 
    NumberFormat nf = NumberFormat.getInstance(); 
    nf.setMaximumFractionDigits(2); 
    nf.setMinimumFractionDigits(2); 
%> 

[...] 

<p> the value of AB is <%= nf.format(obj.getValue()) %> <p> 

Cũng xem câu trả lời của Bozho về cách để đạt được kết quả tương tự bằng cách sử dụng JSTL.

4

Để trả lời câu hỏi cuối cùng của bạn đầu tiên - bạn nên sửa đổi các trang JSP, kể từ khi bạn muốn thay đổi cách số là hiển thị, không phải những gì số lượng thực sự .

Để thực hiện việc này, thay vì gọi phương thức toString mặc định của số, bạn có thể sử dụng đối tượng DecimalFormat để chuyển đổi số thành văn bản theo bất kỳ định dạng nào bạn muốn. Trong trường hợp này, bạn có thể muốn sử dụng:

new DecimalFormat("#0.##") 

làm chuỗi định dạng.

Tuy nhiên, as per Bozho's answer có thẻ JSTL để đạt được điều này, đây là cách tốt hơn để giải quyết vấn đề của bạn.

12

Trong JSP, bạn có thể thực hiện việc này bằng cách sử dụng thẻ JSTL <fmt:formatNumber>.Bạn có thể đặt pettern (#0.##) hoặc maxFractionDigits="2"

Tránh sử dụng mã Java trong JSP - thay vào đó hãy sử dụng JSTL. See this tutorial. Và xem this question

Các vấn đề liên quan