2010-05-31 62 views
11

Tôi đã có này, mà đang làm việc:Gán kết quả của một thẻ JSTL như giá trị của thẻ một JSTL

<c:choose> 
    <c:when test="${sometest}"> 
     Hello, world! 
    </c:when> 
    <c:otherwise> 
     <fmt:message key="${page.title}" /> 
    </c:otherwise> 
</c:choose> 

Và tôi muốn thay đổi nó như thế này:

<c:choose> 
    <c:when test="${sometest}"> 
     <c:set var="somevar" scope="page" value="Hello, world!"/> 
    </c:when> 
    <c:otherwise> 
     <c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">" 
    </c:otherwise> 
</c:choose 

Nhưng tất Tất nhiên dòng sau là không đúng:

<c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">" 

Làm thế nào tôi có thể gán cho các someVar biến chuỗi kết quả từ một cuộc gọi đến fmt: message?

Trả lời

21

Các fmt:messagevar thuộc tính cũng được thực hiện một cách hiệu quả những gì bạn muốn.

<fmt:message key="${page.title}" var="somevar" /> 

Đó là tất cả. Đánh dấu trang JSTL tlddoc, nó có thể có ích.

+0

nhờ bạn một lần nữa ... Thật thú vị có ba câu trả lời và ba cách khác nhau để làm điều đó :) – NoozNooz42

+0

Bạn được chào đón. Hai câu trả lời khác là về mặt kỹ thuật giống nhau và thực sự có hiệu quả giống nhau. Nó chỉ là mã và chỉ chứng minh rằng sự hiện diện và việc sử dụng 'var' attribtue trong phần lớn các thẻ JSTL' fmt' là tương đối không rõ;) – BalusC

+0

Tại sao nó được gọi là 'fmt: message' nếu tất cả nó đang làm là thiết lập một biến số. Có định dạng hoặc sửa đổi biến theo bất kỳ cách nào không? –

8

Nó cũng có thể để xác định giá trị để thiết lập sử dụng các nội dung của cơ thể, chứ không phải thông qua các thuộc tính giá trị:

<c:set var="somevar" scope="page"> 
    <fmt:message key="${page.title}"/> 
</c:set> 
5

Bạn sẽ phải làm gì với:

<c:set var="title"><fmt:message key="${page.title}"></c:set> 
<c:set var="somevar" scope="page" value="${title}" /> 

Vì bạn không thể sử dụng <fmt:message .. /> tại chỗ đó là kinh nghiệm của tôi, đã làm với làm tổ như bạn đề nghị. Hoặc đi với gợi ý @balusc ;-)

+0

André van Toly: +1, thx với bạn quá ... Tôi đã đi với thuộc tính var ngắn hơn của thẻ fmt mà BalusC đã chỉ ra. – NoozNooz42

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