动态更新gui的状态

时间:2013-06-28 09:58:24

标签: ajax jsp jquery struts2 struts2-jquery

在test.jsp中,我显示以下信息

  1. 节点名称

  2. 节点位置

  3. 当前状态

  4. 要显示以上信息showStatus方法的动作类TestAction.java被调用,此方法通过以下块检索状态 代码。

    TestDTO.getInstance("NODE1").getCurrentStatus()
    

    执行showStatus方法后,控件将转到test.jsp。

    TestAction.java

    import java.util.ArrayList;
    import java.util.Map;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class TestAction extends ActionSupport
    {
    public TestAction()
    {super();
      try{}
      catch (Exception e){e.printStackTrace();}
    }
    
    
    public String showStatus() throws Exception 
    {
        ArrayList testList=new ArrayList();
        Map session = (Map)ActionContext.getContext().getSession();
        TestDTO tdto=new TestDTO();
        tdto.setNodeName("NODE1");
        tdto.setNodeLocation("location1");
        tdto.setCurrentStatus(TestDTO.getInstance("NODE1").getCurrentStatus());
        testList.add(tdto);
        session.put("SHOWLIST",tdto);
        return "input";
    }
       }
    

    执行showStatus方法后,控件将转到test.jsp。

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
     <%@ page import="com.opensymphony.xwork2.ActionContext"%>
     <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>NODE STATUS</title>
       </head><body><center><s:form><br>
    <s:if test="%{#session.SHOWLIST}">
        <table width="80%" border="1" bgcolor="#FFFFFF" bordercolor="grey" align="center">
        <tr><th><font  size="4">NODE NAME</font></th><th><font  size="4">NODE LOCATION</font></th>
                <th ><font  size="4">Status</font></th></tr>
    
        <s:iterator value="%{#session.SHOWLIST}" var="mylist">
            <tr><td bgcolor="#E6FAFB" align="center"><s:property value="nodeName" /></td>
                <td bgcolor="#E6FAFB" align="center"><s:property value="nodeLocation"/></td>
                <td bgcolor="#E6FAFB" align="center"><s:property value="currentStatus" /></td></tr>
        </s:iterator></table></s:if></s:form></center>
         </body></html>
    

    其他一些应用程序正在通过以下代码块来更新状态

    TestDTO.getInstance("NODE1").setCurrentStatus("RUNNING");
    

    我的问题是我想在没有任何用户干预的情况下动态更新gui节点的当前状态。 一旦用户点击链接,我正在调用showStatus方法,并且能够在gui上显示节点的状态,但在此之后如果它发生变化,那么为了知道当前状态用户再次访问该链接,我想避免这种情况。 我想要gui这样的行为 1.用户访问链接,可以看到状态。 2.如果一段时间后发生变化,则应自动更新当前状态。

    TestDTO.java

    import java.util.HashMap;
     public class TestDTO 
      {
    String nodeName;String nodeLocation;String currentStatus="STOPPED";
    private static HashMap instance=new HashMap();
    public String getNodeName() {
        return nodeName;
    }
    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }
    public String getNodeLocation() {
        return nodeLocation;
    }
    public void setNodeLocation(String nodeLocation) {
        this.nodeLocation = nodeLocation;
    }
    public String getCurrentStatus() {
        return currentStatus;
    }
    public void setCurrentStatus(String currentStatus) {
        this.currentStatus = currentStatus;
    }
    
    public  static synchronized TestDTO getInstance(String nodeName)
    {
        TestDTO a;
        if(instance.containsKey(nodeName))
        {
            return (TestDTO) instance.get(nodeName);
        }
        else
        {
            a = new TestDTO();
            if(nodeName!=null && nodeName.length()>0)
                instance.put(nodeName,a);
    
            return a;
        }
         }
             }
    

0 个答案:

没有答案