WCS AJAX 使用道场和控制器刷新
WCS AJAX refresh using dojo and controller
我在极光商店工作,我创建了一个刷新控制器来刷新一个区域。
但是控制器只在第一次工作,这意味着当第一次加载页面并单击我编写了刷新控制器的按钮时,只有在该区域没有刷新之后区域才会刷新,我错过了什么?
参考代码:
单击按钮刷新包含人员详细信息的页面部分的示例应用程序
1.在 JavaScript 文件中定义上下文。上下文将处理并允许刷新区域,在 jsp 文件中设置控制器的 URL
wc.render.declareContext("MyAreaContext",null,""),
SBControllersDeclarationJS.setControllerURL('CustomController','<c:out value="${AjaxCustomInformationViewURL}"/>');
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>
3。触发更新上下文的事件(按钮单击)
<a role="button"
id="WC_Custom_links_1" tabindex="0"
href="JavaScript:CustomHelper.updateInfo(); wc.render.updateContext('CustomAreaContext');">
函数 "updateInfo" 每次点击都工作正常,但第一次后刷新不起作用。
4. Struts-配置-ext.xml
<forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/>
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. Controller definition : URL 被调用,这里保留它为 null 因为这将在客户端更新 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>
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}
问题已解决。我正在解析名称错误的小部件。
我在极光商店工作,我创建了一个刷新控制器来刷新一个区域。
但是控制器只在第一次工作,这意味着当第一次加载页面并单击我编写了刷新控制器的按钮时,只有在该区域没有刷新之后区域才会刷新,我错过了什么?
参考代码:
单击按钮刷新包含人员详细信息的页面部分的示例应用程序
1.在 JavaScript 文件中定义上下文。上下文将处理并允许刷新区域,在 jsp 文件中设置控制器的 URL
wc.render.declareContext("MyAreaContext",null,""),
SBControllersDeclarationJS.setControllerURL('CustomController','<c:out value="${AjaxCustomInformationViewURL}"/>');
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>
3。触发更新上下文的事件(按钮单击)
<a role="button"
id="WC_Custom_links_1" tabindex="0"
href="JavaScript:CustomHelper.updateInfo(); wc.render.updateContext('CustomAreaContext');">
函数 "updateInfo" 每次点击都工作正常,但第一次后刷新不起作用。
4. Struts-配置-ext.xml
<forward className="com.ibm.commerce.struts.ECActionForward" name="CurrentCustomView/47401" path="/ShoppingArea/CustomInfo.jsp"/>
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. Controller definition : URL 被调用,这里保留它为 null 因为这将在客户端更新 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>
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}
问题已解决。我正在解析名称错误的小部件。