Vikings

          調(diào)用jsonrpc的技巧

          一段不用每個(gè)jsp頁面都JSONRPCBridge.registerObject的方法

          1. JsonContextLinster
          在spring文件里讀取需要注冊bridge的bean名單
          registerObject
          public class JSONContextListener implements ServletContextAttributeListener {
              
          private final Log log = LogFactory.getLog(JSONContextListener.class);

              
          public void attributeAdded(ServletContextAttributeEvent event) {
                  
          if (event.getName().equals(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)) {
                      
          // register LookupHelper so we can call methods on it
                      ApplicationContext ctx = (ApplicationContext) event.getValue();

                      
          // check for null so we don't have to initialize Spring in tests
                      if (ctx != null{
                          log.debug(
          "Registering jsonObjects for XmlHttpRequest to GlobalBridge");
                          
                          JSONRPCBridge jsonBridge 
          = JSONRPCBridge.getGlobalBridge();

                          Map jsonObjects 
          = (Map) ctx.getBean("jsonObjects");
                          
          for (Object name : jsonObjects.keySet()) {
                              jsonBridge.registerObject(name, jsonObjects.get(name));
                          }

                          
                      }

                  }
                  
              }

          public void attributeReplaced(ServletContextAttributeEvent event) {
                  attributeAdded(event);
              }

          }


          2.spring配置里的jsonObject
              <!-- json registration -->
              
          <bean name="jsonObjects" class="java.util.HashMap">
                  
          <constructor-arg>
                      
          <map>
                          
          <entry key="information" value-ref="informationJson"></entry>
                      
          </map>
                  
          </constructor-arg>
              
          </bean> 

              
          <bean id="informationJson" class="com.vikings.tools.json.Information" >
                  
          <property name="informationDAO" ref="informationDAO" />
              
          </bean>

          3.web.xml里增加配置剛才寫的listener
          <listener>
                  
          <listener-class>com.vikings.tools.json.JSONContextListener</listener-class>
              
          </listener>

          到這里就不用這么寫了
          <jsp:useBean id="JSONRPCBridge" scope="session"
             class
          ="com.metaparadigm.jsonrpc.JSONRPCBridge" />

          <% JSONRPCBridge.registerObject("myTestObject", aTestObject); %>
          這個(gè)也不需要
          // Find the JSONRPCBridge for this session or create one
          // if it doesn't exist. Note the bridge must be named "JSONRPCBridge"
          // in the HttpSession for the JSONRPCServlet to find it.
          HttpSession session = request.getSession();
          JSONRPCBridge json_bridge 
          = null;
          json_bridge 
          = (JSONRPCBridge) session.getAttribute("JSONRPCBridge");
          if(json_bridge == null{
              json_bridge 
          = new JSONRPCBridge();
              session.setAttribute(
          "JSONRPCBridge", json_bridge);
          }

          posted on 2007-11-01 22:19 Vikings 閱讀(1482) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 舒兰市| 南汇区| 东平县| 华容县| 金湖县| 江达县| 蒙城县| 广西| 胶州市| 丹棱县| 博野县| 望江县| 高密市| 郑州市| 松阳县| 闵行区| 普兰店市| 吉林市| 呼图壁县| 革吉县| 宣威市| 东阳市| 汾西县| 井研县| 临湘市| 武夷山市| 玉龙| 宁阳县| 东光县| 临朐县| 贵南县| 原阳县| 兴文县| 邯郸县| 霞浦县| 怀化市| 甘洛县| 怀来县| 深州市| 阿坝| 商南县|