2013-12-09 41 views
1

我在JSP中聲明這些方法如下:如何調用java方法JSTL

<%! 
String getAmPm(Date d){ 
String am_pm = "AM"; 
String hour = String.valueOf(d.getHours()); 
if (hour.length() == 1) { 
hour = "0" + hour; 
    } 
String hr_ampm = HarfDate.getHourAmPm(hour); 
hour = hr_ampm.split(",")[0]; 
am_pm = hr_ampm.split(",")[1]; 
return am_pm; 
} 
%> 

上述方法接受一個Date對象,並返回上午或下午根據日期的確切時間應用,如果我們使用小腳本我們稱之爲如下:

if(getAmPm(((PublishedExamsVO)publishedExams[i]).getTo()).equals("AM")) 

注:(PublishedExamsVO)publishedExams[i]).getTo()返回Date對象

我想打電話給使用JSTL,這樣做的任何想法,這些方法是什麼?我我已經看到fmt:formatDate但我認爲它不會救我

+2

如果不知道上面的代碼應該做什麼,很難回答。 –

回答

0

你正在努力,而不是使用Java和封裝提供行爲的觀點把太多的邏輯視圖。只需將下面的方法添加到您的PublishedExamsVO類,並從您的視圖中使用它:

public boolean isMorning() { 
    ... 
} 

...

<c:if test="${publishedExams.morning}"> 
    ... 
</c:if> 
0

您可以使用格式"a"獲得與fmt:formatDate的AM/PM指示:

<fmt:formaDate pattern="a" value="${yourDateHere}" /> 

要測試的返回值,你必須先爲它分配給一個變量:

<c:set var="period"> 
    <fmt:formaDate pattern="a" value="${yourDateHere}" /> 
</c:set> 
<c:if test="${period eq 'AM'}">xxxx</c:set> 
+0

以及如何測試這些函數的返回值? –

0

如果您需要一些可重用的代碼用於JSP,請考慮函數而不是scriptlet。作爲一個簡單的例子,請看這個blog post