Cách gọi một phương thức Java với các đối số được định nghĩa trong lớp Java, từ JSP sử dụng JSTL/EL. Phương thức trả về mảng. Có thể sử dụng bất kỳ giá trị trả lại nào.Cách gọi phương thức tham số hóa từ JSP bằng cách sử dụng JSTL/EL
Trả lời
Cung cấp cho JSP một tham chiếu đến một thể hiện của lớp có phương thức và gọi nó.
Có lẽ bạn đang hỏi ai cung cấp cho JSP ví dụ - đó là một servlet trong sắp xếp MVC kiểu-2.
Đây là cách dòng chảy sẽ làm việc:
- Gửi một yêu cầu GET/POST từ một JSP để một servlet.
- Servlet hành động theo yêu cầu đó và thực hiện một số hoạt động thay mặt cho JSP. Đặt tất cả các đối tượng cần thiết vào yêu cầu, phiên hoặc phạm vi thích hợp khác.
- Các tuyến đường Servlet đáp ứng với JSP tiếp theo, có thể giống với JSP yêu cầu.
- Rửa sạch, lặp lại.
Nếu bạn đang sử dụng JSF, bạn có thể sử dụng hành động bean làm mô hình trong Phạm vi xem và tải từ nguồn dữ liệu tự động. Và nếu bạn đang sử dụng JSP, làm thế nào về việc sử dụng thẻ TLD? Và sử dụng thẻ JSTL <c:foreach>
? Nó tiết kiệm bộ nhớ từ việc lưu trong phiên, hoặc lưu trong phiên và loại bỏ nó khi tải sự kiện xong? Một số cách như thế này (JSTL + TLD)
<c:forEach items="${myTag:getProductByPage(page)}" var="p">
Product name: ${p.productName}
</c:forEach>
Bạn chỉ có thể gọi các phương pháp với đối số trong EL nếu bạn đang nhắm mục tiêu và chạy một Servlet 3.0 chứa tương thích (ví dụ Tomcat 7, Glassfish 3, JBoss AS 6, vv) với số web.xml
được công bố phù hợp với Servlet 3.0. Phiên bản servlet này đi kèm với EL 2.2 cho phép gọi các phương thức cá thể tùy ý bằng các đối số.
Giả sử rằng bạn đã một ${bean}
trong phạm vi đó đề cập đến một thể hiện của một lớp trong đó có một phương pháp giống như public Object[] getArray(String key)
, sau đó bạn sẽ có thể làm điều này:
<c:forEach items="${bean.getArray('foo')}" var="item">
${item} <br />
</c:forEach>
hoặc thậm chí với một biến làm đối số
<c:forEach items="${bean.getArray(foo)}" var="item">
${item} <br />
</c:forEach>
Nhưng nếu bạn không nhắm mục tiêu vùng chứa Servlet 3.0, thì bạn không thể gọi phương thức với đối số trong EL. Đặt cược tốt nhất của bạn là chỉ thực hiện công việc trong servlet tiền xử lý như đề xuất của Duffymo.
Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
Là một phương án hoàn toàn khác, bạn có thể tạo hàm EL đại biểu cho cuộc gọi phương thức. Bạn có thể tìm thấy một ví dụ khởi động ở đâu đó gần cuối của this blog. Bạn muốn kết thúc một cái gì đó như là:
<c:forEach items="${util:getArray(bean, 'foo')}" var="item">
${item} <br />
</c:forEach>
với
public static Object[] getArray(Bean bean, String key) {
return bean.getArray(key);
}
Tôi đang làm một cái gì đó tương tự với đối tượng yêu cầu, gọi 'isUserInRole ('role')' nhưng eclipse nghĩ rằng đây là một phương thức get và phàn nàn về phương thức 'getIsUserInRole()' không tồn tại. Bạn có biết làm thế nào điều này có thể được cố định? Tôi đang sử dụng glassfish v3. Cảm ơn, D. – Daniel
@Daniel: Eclipse yếu như kiểm tra và xác thực cú pháp EL. Chỉ cần vô hiệu hóa xác thực EL trong Eclipse, hoặc cài đặt JBoss Tools. – BalusC
Cảm ơn. Tôi vô hiệu hóa nó và nó hoạt động. – Daniel
Công tác giải pháp didnt trên đối với tôi. Tôi có chức năng getRemitanceProfileInformation(user)
trong lớp java của mình. Tôi đã tạo một lớp usebean của java và sau đó được gọi
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
và nó hoạt động.
Tham chiếu sai, ai biết được giải pháp * ở trên * nào khi bạn trả lời. – madth3
- 1. Cách khóa bằng tham số phương thức?
- 2. Gọi các phương thức tĩnh có chứa các tham số chung bằng cách sử dụng Reflection
- 3. Gọi phương thức lớp php từ chuỗi với tham số
- 4. Cách gọi mà không có phương thức tham số?
- 5. truy cập tham số url bằng cách sử dụng jstl
- 6. Sử dụng tên tham số phương thức khi tạo WSDL từ Java bằng wsgen và maven?
- 7. Cách gọi một phương thức Java từ C++/JNI lấy tham số ngữ cảnh Android
- 8. Gọi một Servlet từ một trang JSP bằng cách sử dụng jQuery Ajax
- 9. Loại truyền bằng cách sử dụng tham số kiểu
- 10. cách gọi phương thức ASP.NET C# bằng cách sử dụng javascript
- 11. Làm thế nào để bạn chuyển các tham số bằng cách ref khi gọi một phương thức tĩnh bằng cách sử dụng sự phản chiếu?
- 12. Gọi phương thức obj-c với tham số
- 13. Phương thức gọi từ BackgroundWorker
- 14. C# - truyền tham số bằng tham chiếu đến hàm tạo sau đó sử dụng chúng từ phương thức
- 15. Làm cách nào để gọi một phương thức WCF từ C++ bằng cách sử dụng các đường ống có tên?
- 16. Làm cách nào để tham số hóa @Scheduled (fixedDelay) bằng ngôn ngữ biểu thức Spring 3.0?
- 17. Tham số tham chiếu Javadoc từ phương thức khác
- 18. TestNG gọi phương thức thử bằng cách sử dụng nhiều luồng?
- 19. Cách gọi phương thức bằng tên của nó?
- 20. Làm cách nào để xuất số nguyên bằng cách sử dụng phương thức Put_Line?
- 21. Cách tạo phương thức mã hóa/giải mã hai chiều bằng cách sử dụng khóa cụ thể sử dụng - PHP?
- 22. Làm cách nào để tránh sử dụng tham số ngoài trong khối phương thức ẩn danh?
- 23. Làm cách nào để gọi phương thức có tham số đầu ra trong PowerShell?
- 24. Cách cấm gọi phương thức C#
- 25. Làm thế nào để sửa đổi các đối số phương thức bằng cách sử dụng PostSharp?
- 26. Xác nhận một hàm/phương thức không được gọi bằng cách sử dụng Mock
- 27. Cách tốt nhất để chuyển nhiều tham số đến phương thức gọi lại Threading.Timer là gì?
- 28. Đồng bộ hóa/khóa các cuộc gọi phương thức hạt mịn dựa trên các tham số phương pháp
- 29. Làm cách nào để chuyển các tham số cho phương thức gọi lại jQuery $ .getJSON?
- 30. gọi phương thức cơ sở sử dụng từ khóa mới
Tôi đang sử dụng struts tiles.could bạn vui lòng giải thích nó yor giải thích, hơn chúng ta cần gọi một metod chấp nhận một tham số, ở đây nó sẽ là các giá trị ollean được đặt trong JSP. –