Jquery 使用dojo和controller的WCS AJAX刷新

Jquery 使用dojo和controller的WCS AJAX刷新,jquery,ajax,dojo,websphere-commerce,wcs,Jquery,Ajax,Dojo,Websphere Commerce,Wcs,我在极光商店工作,我创建了一个刷新控制器来刷新一个区域 但是控制器只能第一次工作,这意味着当第一次加载页面并单击我已编写刷新控制器的按钮时,该区域在没有刷新后才得到刷新,我缺少什么 参考代码: 单击按钮即可刷新包含人员详细信息的页面部分的示例应用程序 <a role="button" id="WC_Custom_links_1" tabindex="0" href="JavaScript:Custo

我在极光商店工作,我创建了一个刷新控制器来刷新一个区域

但是控制器只能第一次工作,这意味着当第一次加载页面并单击我已编写刷新控制器的按钮时,该区域在没有刷新后才得到刷新,我缺少什么

参考代码:

单击按钮即可刷新包含人员详细信息的页面部分的示例应用程序

<a role="button"
                       id="WC_Custom_links_1" tabindex="0"
                       href="JavaScript:CustomHelper.updateInfo();      wc.render.updateContext('CustomAreaContext');">
 <forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/> 
         <script type="text/javascript">
                wc.render.declareRefreshController({
                id: "CustomController",
               renderContext: wc.render.getContextById("CustomAreaContext"),
               url: "",
             formId: ""
             ,modelChangedHandler: function(message, widget) {

               var controller = this;
                var renderContext = this.renderContext;
                widget.refresh(renderContext.properties);
              cursor_clear();  


             }
           ,renderContextChangedHandler: function(message, widget) {

          var controller = this;
          var renderContext = this.renderContext;
          widget.refresh(renderContext.properties);
           cursor_clear();  

         }
       ,postRefreshHandler: function(widget) {
        var controller = this;
        var renderContext = this.renderContext;
        cursor_clear();

       }
      });
   </script>
1。在JavaScript文件中定义了上下文。上下文将处理并允许刷新区域,在jsp文件中设置控制器的URL

 wc.render.declareContext("MyAreaContext",null,""),
  SBControllersDeclarationJS.setControllerURL('CustomController','<c:out value="${AjaxCustomInformationViewURL}"/>');
wc.render.declareContext(“MyAreaContext”,null,”,
SBControllersDeclarationJS.setControllerURL('CustomController','');
2。将此div置于需要刷新的区域之前

  <div dojotype="wc.widget.RefreshArea" widgetid="RefreshAreaDisplay" 
                controllerid="CustomController" id="RefreshCustomAreaDisplay" role="wairole:region" 
                waistate:live="polite" waistate:atomic="false" waistate:relevant="all">  

在这个div中,以下是内容

  ${person.email1}

        ${person.firstName} ${person.lastName}

        ${person.addressLine[0]}

        ${person.country}
                   </div>
${person.email1}
${person.firstName}${person.lastName}
${person.addressLine[0]}
${person.country}
3。触发更新上下文的事件(单击按钮)

<a role="button"
                       id="WC_Custom_links_1" tabindex="0"
                       href="JavaScript:CustomHelper.updateInfo();      wc.render.updateContext('CustomAreaContext');">
 <forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/> 
         <script type="text/javascript">
                wc.render.declareRefreshController({
                id: "CustomController",
               renderContext: wc.render.getContextById("CustomAreaContext"),
               url: "",
             formId: ""
             ,modelChangedHandler: function(message, widget) {

               var controller = this;
                var renderContext = this.renderContext;
                widget.refresh(renderContext.properties);
              cursor_clear();  


             }
           ,renderContextChangedHandler: function(message, widget) {

          var controller = this;
          var renderContext = this.renderContext;
          widget.refresh(renderContext.properties);
           cursor_clear();  

         }
       ,postRefreshHandler: function(widget) {
        var controller = this;
        var renderContext = this.renderContext;
        cursor_clear();

       }
      });
   </script>

函数“updateInfo”在每次单击时都可以正常工作,但在第一次单击后刷新就不起作用了

4。Struts-config-ext.xml

<a role="button"
                       id="WC_Custom_links_1" tabindex="0"
                       href="JavaScript:CustomHelper.updateInfo();      wc.render.updateContext('CustomAreaContext');">
 <forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/> 
         <script type="text/javascript">
                wc.render.declareRefreshController({
                id: "CustomController",
               renderContext: wc.render.getContextById("CustomAreaContext"),
               url: "",
             formId: ""
             ,modelChangedHandler: function(message, widget) {

               var controller = this;
                var renderContext = this.renderContext;
                widget.refresh(renderContext.properties);
              cursor_clear();  


             }
           ,renderContextChangedHandler: function(message, widget) {

          var controller = this;
          var renderContext = this.renderContext;
          widget.refresh(renderContext.properties);
           cursor_clear();  

         }
       ,postRefreshHandler: function(widget) {
        var controller = this;
        var renderContext = this.renderContext;
        cursor_clear();

       }
      });
   </script>

5.URL构造

 <wcf:url var="AjaxCustomInformationViewURL" value="CurrentCustomView" type="Ajax">
                  <wcf:param name="langId" value="${langId}" />                        
                  <wcf:param name="storeId" value="${WCParam.storeId}" />
                <wcf:param name="catalogId" value="${WCParam.catalogId}" />
               <wcf:param name="orderId" value="${currentOrderId}" />
           </wcf:url>

6。控制器定义:要调用的URL,此处将其保留为null,因为这将在客户端jsp中更新

<a role="button"
                       id="WC_Custom_links_1" tabindex="0"
                       href="JavaScript:CustomHelper.updateInfo();      wc.render.updateContext('CustomAreaContext');">
 <forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/> 
         <script type="text/javascript">
                wc.render.declareRefreshController({
                id: "CustomController",
               renderContext: wc.render.getContextById("CustomAreaContext"),
               url: "",
             formId: ""
             ,modelChangedHandler: function(message, widget) {

               var controller = this;
                var renderContext = this.renderContext;
                widget.refresh(renderContext.properties);
              cursor_clear();  


             }
           ,renderContextChangedHandler: function(message, widget) {

          var controller = this;
          var renderContext = this.renderContext;
          widget.refresh(renderContext.properties);
           cursor_clear();  

         }
       ,postRefreshHandler: function(widget) {
        var controller = this;
        var renderContext = this.renderContext;
        cursor_clear();

       }
      });
   </script>

wc.render.declareRefreshController({
id:“客户控制器”,
renderContext:wc.render.getContextById(“CustomAreaContext”),
url:“”,
福美德:“
,modelChangedHandler:function(消息,小部件){
var控制器=此;
var renderContext=this.renderContext;
刷新(renderContext.properties);
光标清除();
}
,renderContextChangedHandler:函数(消息,小部件){
var控制器=此;
var renderContext=this.renderContext;
刷新(renderContext.properties);
光标清除();
}
,postRefreshHandler:函数(小部件){
var控制器=此;
var renderContext=this.renderContext;
光标清除();
}
});
7。CustomInfo.jsp

  <wcf:rest var="person" url="store/{storeId}/person/@self"
            scope="request">
            <wcf:var name="storeId" value="${WCParam.storeId}" encode="true" />
</wcf:rest>

        ${person.email1}

        ${person.firstName} ${person.lastName}

${person.email1}
${person.firstName}${person.lastName}

问题已解决。我正在解析名称错误的小部件。

问题已解决。我用错误的名称解析小部件。

你能澄清一下是什么解析问题吗,因为我有一个类似的问题?@cnu对不起,没有收到你的问题,我的问题是我错误地键入了小部件的名称。您只需检查所有ID(无论在何处)是否被使用,以及名称是否符合预期。由于我有类似的问题,您能否澄清这是什么解析问题?@cnu抱歉,没有收到您的问题,我的问题是我输入的小部件名称错误。您只需要检查所有的ID(无论在哪里)是否被使用,以及名称是否符合预期。