我想在這個幫助下做部分頁面刷新。以一個場景,我們有一個下拉列表根據它的選擇選項,我想刷新頁面的div部分,根據下拉選擇填充數據。如何在struts2中使用struts2-jquery插件進行局部頁面刷新?
如何做到這一點?
更新時間:
我已經試過這樣:
JSP代碼:
在此下拉選擇我想填充(刷新)股利。
<s:form id="RoleListForm">
<s:label value="Roles"/>
// JSON Action populating roleNameList on page Load
<s:url id="fetchJsonRoleListUrl" action="fetchJsonRoleList"/>
<sj:select
name="idRoleInfo"
id="idRoleInfoList"
href="%{fetchJsonRoleListUrl}"
list="roleNameList"
onChangeTopics="reloadRolePrivilegesDiv"
listKey="idRoleInfo"
listValue="roleName"
emptyOption="true"/>
</s:form>
這裏是我想根據DD選擇填充DIV代碼,但我沒有得到文本框的值填充:
// JSON動作在頁面加載
<s:url id="roleDetailsUrl" action="roleDetailsAction" />
<sj:div href="%{roleDetailsUrl}" formIds="RoleListForm" reloadTopics="reloadRolePrivilegesDiv">
<s:textfield id="idRoleName" name="roleName" />
<s:textfield id="idRolePrivileges" name="privileges"/>
</sj:div>
我我正在瀏覽器中使用div部分:
{"roleName":"IT User","privileges":"IT User"}
更新部分:
Action類:
public class GraphsAction extends ActionSupport {
private String startDate;
private String endDate;
private String bodyStats;
HomeService homeService = new HomeService();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
public String reloadDatePicker() {
Date date1 = new Date();
Date date2 = new Date();
Map session = ActionContext.getContext().getSession();
Integer loginId = (Integer) session.get("loginId");
if (loginId != null) {
List list = homeService.getAllGraphData(loginId);
List chestList = homeService.getChestGraphData(loginId);
List waistList = homeService.getWaistGraphData(loginId);
List hipsList = homeService.getHipsGraphData(loginId);
List bicepsList = homeService.getBicepsGraphData(loginId);
if (bodyStats.equals("")) {
UserStats usetsts = (UserStats) list.get(0);
date1 = usetsts.getUpadtedDate();
this.startDate = formatter.format(date1);
UserStats usetsts1 = (UserStats) list.get(list.size() - 1);
date2 = usetsts1.getUpadtedDate();
this.endDate = formatter.format(date2);
}
if (bodyStats.equals("0")) {
UserStats usetsts = (UserStats) list.get(0);
date1 = usetsts.getUpadtedDate();
this.startDate = formatter.format(date1);
UserStats usetsts1 = (UserStats) list.get(list.size() - 1);
date2 = usetsts1.getUpadtedDate();
this.endDate = formatter.format(date2);
}
if (bodyStats.equals("1")) {
UserStats usetsts = (UserStats) list.get(0);
date1 = usetsts.getUpadtedDate();
this.startDate = formatter.format(date1);
UserStats usetsts1 = (UserStats) list.get(list.size() - 1);
date2 = usetsts1.getUpadtedDate();
this.endDate = formatter.format(date2);
}
if (bodyStats.equals("2")) {
UserStats usetsts = (UserStats) list.get(0);
date1 = usetsts.getUpadtedDate();
this.startDate = formatter.format(date1);
UserStats usetsts1 = (UserStats) list.get(list.size() - 1);
date2 = usetsts1.getUpadtedDate();
this.endDate = formatter.format(date2);
}
return SUCCESS;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getBodyStats() {
return bodyStats;
}
public void setBodyStats(String bodyStats) {
this.bodyStats = bodyStats;
}
}
的struts.xml:
<action name="jsonReloadDatePickerAction" class="com.ebhasin.fitnessbliss.actions.GraphsAction" method="reloadDatePicker">
<result name="success">/jsps/datePicker.jsp</result>
</action>
你知道你需要struts2-json-plugin,你有沒有返回json的動作呢?你有沒有用java腳本調用它來獲取數據?你有沒有試圖用jquery將數據寫入div,可能使用jQuery.getJSON()和適當的回調函數? – Quaternion
@ Quaterninon我更新了我的問題,請檢查我在做什麼 – Vishu
@ user1703710,您的問題有兩個部分,1)服務器端生產json並將其返回給瀏覽器。 2)在瀏覽器上呈現該json。使用這些sj:標籤的問題是他們混淆了這個問題。它們是面向客戶端的,但需要觀衆瞭解服務器端技術,從而大大減少您的觀衆,而且即使對於struts2用戶,這些標籤也是非常可選的。 – Quaternion