2

これを利用してページの一部を更新したいと思います。シナリオを考えてみましょう。選択したオプションに応じたドロップダウンリストがあります。ドロップダウンの選択に応じてデータを入力して、ページのdivセクションを更新したいと思います。

これを行う方法?

更新しました :

私はこれを試しました:

JSPコード:
このドロップダウン選択で、divにデータを入力(更新)します。

<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"}

更新された部分:

アクションクラス:

 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>
4

2 に答える 2

0

オプションの1つは、現在内部にあるコンテンツを<sj:div>別のJSPページに配置roleDetailsActionし、jsonの結果ではなくそのページを返すようにアクションを構成することです。

于 2012-12-07T21:38:05.213 に答える
0

私はほとんどすべてのソフトウェアソリューションでこれを行わなければなりません...!! これらは私がすることです

a)サーバーから必要なすべてのデータをページにロードし、HTMLソースコードでドロップダウンボタンのonchangeイベントをJSの関数にリンクします。

b)サーバーから取得したデータをページに入力/初期化します。

c)ドロップダウンボタンのonchangeイベントをJSでの実装にリンクしたので、これらの関数(JSで)からAJAX呼び出しを行い、サーバーから必要なデータを取得するだけです。この場合も、現在のAJAXリクエストの完了の応答で、サーバーから関連データを取得し、DOM操作を使用して必要なデータでページを更新します。

ページのすべての要素/divのIDに固執し、jQueryをいじる必要があります。

ではごきげんよう。

PS:同じものの参照コードが必要な場合は私にpingしてください... !!

于 2014-05-14T18:09:34.300 に答える