如何在JSTL中调​​用java方法

时间:2013-12-09 06:37:40

标签: java jsp jstl jsp-tags

我在JSP中声明了这些方法如下:

<%!
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;
}
%>

上面的方法采用日期对象并根据应用日期的确切时间返回AM或PM,如果我们使用scriptlet,我们将按如下方式调用它:

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

注意:(PublishedExamsVO)publishedExams[i]).getTo()返回日期对象

我想使用JSTL调用这些方法,是否有任何关于这样做的想法?我已经看过fmt:formatDate,但我认为它不会拯救我

3 个答案:

答案 0 :(得分:0)

您试图在视图中放置太多逻辑,而不是使用Java和封装来为视图提供行为。只需将以下方法添加到PublishedExamsVO类,并从您的视图中使用它:

public boolean isMorning() {
    ...
}

...

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

答案 1 :(得分:0)

您可以使用fmt:formatDate格式"a"获取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>

答案 2 :(得分:0)

如果需要为JSP提供一些可重用的代码,请考虑函数而不是scriptlet。查看此blog post作为简单示例。