这是我的 AvailLableEvents 线程代码:
package eventmanagement.util;
import java.util.List;
import eventmanagers.Events;
public class AvailableEvents extends Thread{
private List<Events>availableEventsList=null;
public List<Events> getAvailablEventsList() {
return availableEventsList;
}
public void setAvailableEventsList(List<Events> availableEventsList) {
this.availableEventsList = availableEventsList;
}
@Override
public void run() {
while(true){
this.availableEventsList=Events.getAvailableEvents();
//System.out.println("Executing");
try {
Thread.sleep(1000*60*30);//sleep for 30 minutes
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
我创建了一个启动 AvailableEvents 线程的 ServletContextListener:
package eventmanagement.util;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class EventManagementServletContextListener implements
ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent event) {
AvailableEvents currentevents=new AvailableEvents();
currentevents.start();
event.getServletContext().setAttribute("EVENTS", currentevents);
}
}
这是 web.xml 中的侦听器配置:
<listener>
<listener-class>
eventmanagement.util.EventManagementServletContextListener
</listener-class>
</listener>
用于访问我的 JSP 中的 ListavailableEvents 的 Struts 标记:
<s:set name="curEventsThread" value="#application['EVENTS']"></s:set>
<s:set name="curEventsList" value="#curEventsThread.availableEventsList"/>
<s:iterator value="#curEventsList">
<s:property value="eventtitle"/>
</s:iterator>
eventtitle 是类 Events 的实例变量
我可以通过在 ActionSupport 的任何子类中使用此代码来获得所需的值:
AvailableEvents ae=(AvailableEvents)ServletActionContext.getServletContext().getAttribute("EVENTS");
List<Events>ce=ae.getAvailablEventsList();
for(Events e:ce){
System.out.println(e.getEventtitle());
}
如何在 Struts 标签中执行此操作 在此先感谢您提供的任何帮助。