2011-12-08 37 views
14

// index.jspYêu cầu return.getParameter là gì?

<form method="post" action="backend.jsp"> 
<input type="text" name="one" /> 
<input type="submit value="Submit" /> 
</form> 

Trong backend.jsp những gì hiện request.getParameter ("one"); trở về?

request.getParameter("one").getClass().getName();

lợi nhuận java.lang.String, vì vậy nó phải là một String phải không?

Tuy nhiên tôi không thể làm

String one = request.getParameter("one"); 
if (!"".equals(one)) {} 

hoặc

if (one != null) {} 

này là hiển nhiên, bởi vì biến một không trả lại null. Có phải là

if (one.length() > 0) {} 

chỉ có cách để đi, hoặc có giải pháp tốt hơn hoặc cách tiếp cận tốt hơn? Tôi đang xem xét cả hai giải pháp được trên jsp. Sử dụng một servlet (mặc dù jsp là một servlet) là một ca sử dụng khác trong kịch bản này.

+1

tôi khuyên bạn nên đọc các javadocs trước khi đặt câu hỏi như thế này. Nó tiết kiệm thời gian của mọi người. Trong trường hợp cụ thể này, bạn dường như đã đưa ra các giả định không chính xác, và việc đọc javadoc sẽ sửa chữa. –

+1

Cảm ơn bạn đã củng cố ý định của mình. Ngoại trừ đoạn cuối cùng của tôi, tôi về cơ bản nói cùng một điều tôi đã đọc javadoc trước khi bình luận, để mọi người sẽ không bình luận vội vã hoặc phạm vi vấn đề bên ngoài. Tôi muốn hướng mọi người đến đoạn thứ ba sau khi biết những điều cơ bản này. Tôi đã không làm điều đó trực tiếp, xin lỗi vì điều đó. Chúc mừng !! – Pramod

+0

tại sao bạn lại nói chúng ta không thể làm hai trường hợp kia? – Jus12

Trả lời

29

mỗi sự Javadoc:

Trả về giá trị của một tham số yêu cầu như một String, hoặc null nếu tham số không tồn tại.

Lưu ý rằng có thể gửi tham số trống - sao cho tham số tồn tại nhưng không có giá trị. Ví dụ: tôi có thể bao gồm &log=&somethingElse vào URL để bật ghi nhật ký mà không cần chỉ định &log=true. Trong trường hợp này, giá trị sẽ là một Chuỗi trống ("").

1

Cả if (one.length() > 0) {}if (!"".equals(one)) {} sẽ kiểm tra thông số trống foo và tham số trống là thông tin bạn nhận được nếu biểu mẫu được gửi không có giá trị trong trường văn bản foo.

Nếu có bất kỳ cơ hội nào bạn có thể sử dụng Ngôn ngữ biểu thức để xử lý thông số, bạn có thể truy cập bằng empty param.foo trong biểu thức.

<c:if test='${not empty param.foo}'> 
    This page code gets rendered. 
</c:if> 
+0

Cảm ơn bạn đã nhắc tôi về điều này. Đây thực sự là một giải pháp tốt đẹp (tôi sẽ sử dụng nó, nếu tôi không gặp vấn đề này theo cách của tôi), nhưng tôi háo hức muốn biết làm thế nào mọi người gặp vấn đề này theo nghĩa truyền thống. Ví dụ: Nếu có một số trường hợp bạn có thể thỏa hiệp hoặc phá vỡ mã (nói NullPointerException), chỉ khi kiểm tra độ dài. Nó trả về String, nhưng tôi đã bỏ lỡ một cái gì đó? – Pramod

+0

Bạn có thể nhận được NullPointerException nếu thiếu khỏi biểu mẫu của bạn vì sau đó tham số sẽ là rỗng. – jbindel

4
String onevalue; 
if(request.getParameterMap().containsKey("one")!=false) 
{ 
onevalue=request.getParameter("one").toString(); 
} 
Các vấn đề liên quan