Java 统一表达式语言,方法调用列表参数

Java 统一表达式语言,方法调用列表参数,java,collections,el,Java,Collections,El,我有下一个方法: public int countEvents(List<EventTypeEnum> eventTypes) 这两种崩溃如果值是固定的,您可以执行以下操作: public int countEvents(List<EventTypeEnum> eventTypes) { ... } public int countAlerts() { return countEvents(Arrays.asList(EventTypeEnum.ALERT))

我有下一个方法:

public int countEvents(List<EventTypeEnum> eventTypes)

这两种崩溃

如果值是固定的,您可以执行以下操作:

public int countEvents(List<EventTypeEnum> eventTypes) { ... }
public int countAlerts() { 
    return countEvents(Arrays.asList(EventTypeEnum.ALERT)); 
}

${countAlerts()}
public int countEvents(列出事件类型){…}
公共int countAlerts(){
返回countEvents(Arrays.asList(EventTypeEnum.ALERT));
}
${countAlerts()}

这通常是最简单、最清晰的解决方案。

枚举可以在jstl中作为字符串处理。但是没有直接的方法可以在jstl中创建列表。您需要在范围中有一个事件类型列表,比如说
${eventTypes}
,这是一个
列表
,然后您可以直接在bean中使用类似
${bean.countEvents(eventTypes)}
的方法

然而,根据您的代码,我认为您需要动态地创建它。在这种情况下,您将不得不依赖标准jsp。假设你有一个枚举

public enum EventTypeEnum {
    ALERT, ONCLICK, ONBLUR
}
还有一个pojo,它的计数方法如下

import java.util.List;

public class CountBean {

    public int countEvents(List<EventTypeEnum> eventTypes){
        return eventTypes.size();
    }

}
这样行得通。如果您不想使用
方法,可以使用MicroNova YUZU标签。它是一个开源的基于EL的JSP标记库,旨在扩充JSTL。更多详情请访问

如果您不想创建bean实例来调用此方法,并且希望将其作为静态方法使用,则可以创建自定义jstl方法,如前所述


希望这有帮助。

我需要使用集合元素,而不仅仅是集合大小well,我在Activiti任务中使用表达式语言,并且只有EL可用
import java.util.List;

public class CountBean {

    public int countEvents(List<EventTypeEnum> eventTypes){
        return eventTypes.size();
    }

}
<jsp:useBean id="events" class="java.util.ArrayList"> 
  <% 
    events.add("ALERT");
    events.add("ONCLICK");
  %>
</jsp:useBean>

Length : <c:out value="${myBean.countEvents(events)}"/>