2010-01-18 53 views
5

Tôi đã bắt đầu một thời gian ngắn trước đây với JSP, JSTL, HTML và JavaScript, vì vậy đây là vấn đề của tôi:đặt giá trị var từ giá trị trường đầu vào

Tôi cần đặt giá trị của giá trị của đầu vào bị ẩn. Tùy chọn khác là nếu có thể so sánh bằng cách sử dụng

<c:if test="...."> 

giá trị của biến mà tôi đã gửi cùng với yêu cầu với giá trị của đầu vào bị ẩn.

Cảm ơn.

Cập nhật

Tôi đã cố gắng nhưng không thể làm cho nó làm việc.

Tôi có trường này chứa id và đối tượng. Tôi cũng có danh sách với các đối tượng vì vậy những gì tôi phải làm là tìm đối tượng liên quan đến ID đó.

<input type="text" name="id1" /> 

nhưng nếu tôi làm điều này:

<c:set var="dd" value="${param.id1}" /> 
<input type="text" value="${dd}" /> 

Các văn bản đầu vào là rỗng nhưng các văn bản liên quan đến id1 hiển thị 850 (tức là giá trị là dinamic)

Bất kỳ gợi ý tại sao không hoạt động ?

Cập nhật 2

tôi cần những "multipart/form-data" vì theo hình thức tôi cần phải tải lên một bức tranh. Tôi hiểu làm thế nào để có được các thông số từ Java, nhưng kể từ khi tôi không sử dụng máy chủ nhưng các trang JSP, có cách nào để làm điều đó? Chỉ cần đọc yếu tố đầu vào đó và lưu nó vào một biến.

Trả lời

3

Bạn có thể truy cập thông số yêu cầu bằng cách ẩn ngụ ý ${param} biến.

Ví dụ: http://example.com/context/page.jsp?foo=bar kết hợp với

<c:if test="${param.foo == 'bar'}"> 
    The foo's param value is bar! 
</c:if> 
<c:if test="${param.foo != 'bar'}"> 
    The foo's param value is not bar, it is: ${param.foo} 
</c:if> 

sẽ hiển thị điều kiện đầu tiên.

Nếu bạn thực sự muốn giữ lại một số yếu tố đầu vào ẩn trong yêu cầu tiếp theo (mà đã không thực sự làm rõ ràng trong câu hỏi của bạn), sau đó tất cả các bạn về cơ bản cần phải làm là:

<input type="hidden" name="foo" value="${param.foo}"> 

Cập nhật: theo bản cập nhật của bạn: bạn cũng cần cung cấp cho phần tử đầu vào tên. Vì vậy, ví dụ:

<input type="text" name="id1" value="${param.id1}" /> 

Bằng cách này, nó có sẵn theo request.getParameter("id1") và vốn dĩ cũng là ${param.id1}. bây giờ bạn có nhìn thấy nó không?

Cập nhật 2: theo nhận xét của bạn ở đây: chắc chắn điều này liên quan đến enctype="multipart/form-data". Với mã hóa này, các tham số yêu cầu không có trong bản đồ tham số nữa, nhưng thay vào đó trong phần thân yêu cầu, vì sự trộn lẫn với dữ liệu nhị phân (các tệp tải lên).Nó sẽ là một câu chuyện dài để giải thích tất cả, nhưng về cơ bản bạn cần phải phân tích cú pháp yêu cầu đó. Nếu bạn đang sử dụng Servlet 2.5 trở lên, thì Apache Commons FileUpload rất hữu ích ở đây. Đọc đặc biệt là "Hướng dẫn sử dụng" và "Câu hỏi thường gặp" ở đó để xem các ví dụ mã và để tìm hiểu cách sử dụng nó đúng cách (cũng như trong MSIE!). Bạn thậm chí có thể quyết định tóm tắt Tải tệp lên để bạn có thể sử dụng HttpServletRequest#getParameter()${param} theo cách thông thường, cũng xem this article.

Nếu bạn đã sử dụng Servlet 3.0, bạn chỉ có thể sử dụng HttpServletRequest#getParts(). Bạn thậm chí có thể tóm tắt nó đi để bạn có thể sử dụng HttpServletRequest#getParameter()${param} theo cách thông thường, cũng xem this article.

Cập nhật 3: Ồ, bạn thực sự không muốn sử dụng JSP để thực hiện tất cả quá trình xử lý. Không có nó. Đã đến lúc tìm hiểu Servlet. Bên cạnh đó, khi sử dụng Filter để đặt tất cả các tham số từ cơ thể yêu cầu trở lại trong bản đồ tham số yêu cầu (như được mô tả trong cả hai bài viết), bạn cũng không nhất thiết cần một Servlet sau khi tất cả.

+0

Vẫn không hoạt động, phần tử đầu vào đã có tên "id1". Tất cả các yếu tố đầu vào của tôi đều có tên nhưng không thể nhận bất kỳ cái nào trong số đó bởi $ {param.XXX} có liên quan đến biểu mẫu là "enctype =" multipart/form-data "? – framara

+0

Tôi không hiểu đầy đủ về Update3, bạn có nghĩa là không có cách nào để biết từ cùng một giá trị .jsp giá trị của phần tử đầu vào nếu biểu mẫu là enctype = "multipart/form-data"? – framara

+1

Không sử dụng JSP cho logic nghiệp vụ, nó chỉ nhận được sự cố. thuộc về các lớp Java thực. – BalusC

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