【问题标题】:How to call java method in JSTL如何在 JSTL 中调用 java 方法
【发布时间】:2013-12-26 04:57:12
【问题描述】:

我在 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;
}
%>

上述方法接受一个日期对象,并根据申请日期的确切时间返回上午或下午,如果我们使用scriptlet,我们将调用它如下:

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

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

我想使用 JSTL 调用这些方法,有什么想法吗?我见过fmt:formatDate,但我认为它不会救我

【问题讨论】:

  • 不知道上面的代码应该做什么很难回答。

标签: java jsp jstl jsp-tags


【解决方案1】:

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

public boolean isMorning() {
    ...
}

...

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

【讨论】:

    【解决方案2】:

    您可以通过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>
    

    【讨论】:

    • 以及如何测试这些函数的返回值?
    【解决方案3】:

    如果您的 JSP 需要一些可重用的代码,请考虑使用函数而不是 scriptlet。看看这个blog post 作为一个简单的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多