Tôi đang tạo danh sách thả xuống của tất cả các ngôn ngữ. Việc lựa chọn ngôn ngữ mặc định cho danh sách sẽ được xác định bởi các thông tin bổ sung bởi người sử dụng:Làm thế nào để so sánh hai biến đối tượng trong ngôn ngữ biểu thức EL?
<select>
<c:forEach items="${languages}" var="lang">
<c:choose>
<c:when test="${lang}.equals(${pageLang})">
<option value="${lang}" selected>${lang}</option>
</c:when>
<c:otherwise>
<option value="${lang}">${lang}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
.equals
không xuất hiện để tồn tại trong EL. Có một cái nhìn ở đây nó đề nghị tôi viết chức năng của riêng tôi và sau đó nhập khẩu và sử dụng nó. Vì đây là một trong những điều nhỏ bé chỉ dành cho trang này tôi không muốn phải bắt đầu tạo thư viện, vv chỉ cho việc này. Tôi cũng không muốn bắt đầu tạo các đối tượng chuyên biệt cho servlet để trả về với thông tin bổ sung này trong chúng. Chỉ có điều tôi có thể nghĩ là phải trả lại html thực tế cho toàn bộ dòng tùy chọn từ servlet chứ không chỉ là chuỗi ngôn ngữ, nhưng điều đó làm tôi xấu đi vì vậy tôi hy vọng có một giải pháp thanh lịch hơn.
Kế hoạch tốt nhất để khắc phục nhanh chóng so sánh hai chuỗi trong EL là gì?
Tôi giả sử rằng tôi có thể sử dụng 'test =" $ {lang eq 'en'} "sau đó nữa? Tôi thấy 'eq' trên đó, nhưng nó không phải với hằng số chuỗi? Chỉ cần chắc chắn rằng, tôi không thường xuyên bản thân mình với ngôn ngữ JSTL/biểu thức thường là – SuckerForMayhem
@Sucker: 'eq' là một bí danh cho' == '. Họ làm cả hai chính xác như nhau. Xem thêm [toán tử trong EL] (http://docs.oracle.com/javaee/6/tutorial/doc/bnaik.html). – BalusC
Nó hoạt động EXCEPT trong 1 trường hợp so sánh chuỗi chữ cái. Sau đó, bạn nên sử dụng (hoán đổi đơn giản cho dấu ngoặc kép) http://struts.apache.org/release/2.0.x/docs/why-wont -the-if-tag-assessment-a-one-char-string.html –
exoddus