2013-12-09 43 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