1. 表格的重置
/**************************************************************** * 機 能: クリア処理 * 引 数: なし * 戻り値: なし ****************************************************************/ function doClear() { //初期化の時、IPアドレスの値 var oldDevIp = document.getElementsByName("Hid_OldIpAddress")[0].value; //IPアドレスの値を初期化の時様に設定する document.getElementsByName("Txt_IpAdd")[0].value = oldDevIp; // [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。 var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList"); // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。 var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList"); // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。 var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList"); // 初期化の[PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。 var protocolSelListStr = '<s:property value="Lst_ProtocolList" escape="false"/>'; // 初期化の[PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。 var startSubIpListStr = '<s:property value="Txt_StartSubIpList" escape="false"/>'; // 初期化の[PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。 var prefixLenListStr = '<s:property value="Txt_PrefixLenList" escape="false"/>'; // 配列に変換する。 protocolSelListStr = protocolSelListStr.substring(1, protocolSelListStr.length - 1); startSubIpListStr = startSubIpListStr.substring(1, startSubIpListStr.length - 1); prefixLenListStr = prefixLenListStr.substring(1, prefixLenListStr.length - 1); var protocolSelList = protocolSelListStr.split(", "); var startSubIpList = startSubIpListStr.split(", "); var prefixLenList = prefixLenListStr.split(", "); // [PBR IPアドレスレンジ指定]のクリア処理 for (var i = 0; i < pbr_selBoxeList.length; i++) { // 「プロトコル」項目を取得する。 var selObj = pbr_selBoxeList[i]; // 「IPアドレス」項目を取得する。 var startSubIp = pbr_startSubIpList[i]; // 「Prefix長」項目を取得する。 var prefixLength = pbr_prefixLengthList[i]; // プロトコル selObj.value = protocolSelList[i]; // IPアドレス startSubIp.value = startSubIpList[i]; // Prefix長 prefixLength.value = prefixLenList[i]; } }
2. 表格的内容是否变更
// 変更するかどうかフラグ var changeFlg = false; var initProtocolList = document.getElementsByName("Hid_Init_ProtocolList"); var initStartSubIpList = document.getElementsByName("Hid_Init_StartSubIpList"); var initPrefixLenList = document.getElementsByName("Hid_Init_PrefixLenList"); // [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。 var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList"); // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。 var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList"); // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。 var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList"); var selObj = ""; var startSubIp = ""; var prefixLength = ""; for (var i = 0; i < pbr_selBoxeList.length; i++) { // 「プロトコル」項目を取得する。 var selBoxeList = pbr_selBoxeList[i].value; if (i != (pbr_selBoxeList.length - 1) ) { selObj = selObj + selBoxeList + "," + " "; } else { selObj = selObj + selBoxeList; } // 「IPアドレス」項目を取得する。 var startSubIpList = pbr_startSubIpList[i].value; if (i != (pbr_selBoxeList.length - 1) ) { startSubIp = startSubIp + startSubIpList + "," + " "; } else { startSubIp = startSubIp + startSubIpList; } // 「Prefix長」項目を取得する。 var prefixLengthList = pbr_prefixLengthList[i].value; if (i != (pbr_selBoxeList.length - 1) ) { prefixLength = prefixLength + prefixLengthList + "," + " "; } else { prefixLength = prefixLength + prefixLengthList; } } // プロトコル if (selObj != initProtocolList[0].value) { changeFlg = true; } // IPアドレス if (startSubIp != initStartSubIpList[0].value) { changeFlg = true; } // Prefix長 if (prefixLength != initPrefixLenList[0].value) { changeFlg = true; } if (changeFlg) { //破棄確認ダイアログ出力 if (!confirm(getMessage("MEM001-0009"))) { return; } }
3. 表格的内容是否重复
// [PBR IPアドレスレンジ指定]の「選択」項目リストを取得する。 var pbr_selBoxeList = document.getElementsByName("Lst_ProtocolList"); // [PBR IPアドレスレンジ指定]の「IPアドレス」項目リストを取得する。 var pbr_startSubIpList = document.getElementsByName("Txt_StartSubIpList"); // [PBR IPアドレスレンジ指定]の「Prefix長」項目リストを取得する。 var pbr_prefixLengthList = document.getElementsByName("Txt_PrefixLenList"); var ipList = new Array(); for (var i = 0; i < pbr_selBoxeList.length; i++) { var selObj = pbr_selBoxeList[i]; // 「IPアドレス」項目を取得する。 var startSubIp = pbr_startSubIpList[i]; var startSubIpValue = startSubIp.value; if (startSubIpValue != "") { if (selObj.value == "0") { ipList.push(zeroPadding(startSubIpValue)); } else { ipList.push(startSubIpValue); } } } var fromLength = ipList.length - 1; var toLength = ipList.length; for (var j = 0; j < fromLength; j++) { for (var k = j + 1; k < toLength; k++) { if (ipList[j] == ipList[k]) { alert(getMessage("MEM001-0018", new Array(ipList[j]))); return false; } } } return true;
jsp文:
<table width="99%" class="contents_detail1 word_break"> <tr> <th style="width: 6%" class="contents_detail1_th_center" οnmοuseοver="chgLstTitleBkcolor(this, true)" οnmοuseοut="chgLstTitleBkcolor(this, false)">No.</th> <th style="width: 12%" class="contents_detail1_th_center" οnmοuseοver="chgLstTitleBkcolor(this, true)" οnmοuseοut="chgLstTitleBkcolor(this, false)">選択</th> <th style="width: 40%" class="contents_detail1_th_center" οnmοuseοver="chgLstTitleBkcolor(this, true)" οnmοuseοut="chgLstTitleBkcolor(this, false)">IPアドレス</th> <th style="width: 30%" class="contents_detail1_th_center" οnmοuseοver="chgLstTitleBkcolor(this, true)" οnmοuseοut="chgLstTitleBkcolor(this, false)">Prefix長</th> </tr> <s:iterator value="Lst_ProtocolList" status="protocol"> <tr class="contents_detail1_tr_01" οnclick="chgTrBkcolor(this)"> <td class="contents_detail1_td_right" οnmοuseοver="chgLstBkcolor(this, true)" οnmοuseοut="chgLstBkcolor(this, false)"> <s:property value='#protocol.index + 1'/> </td> <td class="contents_detail1_td" align="center" οnmοuseοver="chgLstBkcolor(this, true)" οnmοuseοut="chgLstBkcolor(this, false)"> <s:select id="Lst_ProtocolList" name="Lst_ProtocolList" list="protocolList" listKey="key" listValue="value" value="%{Lst_ProtocolList.get(#protocol.index)}" onKeyPress="javascript:keyPressSearch(event);" tabindex="3"/> </td> <td class="contents_detail1_td" οnmοuseοver="chgLstBkcolor(this, true)" οnmοuseοut="chgLstBkcolor(this, false)"> <s:textfield id="Txt_StartSubIpList" name="Txt_StartSubIpList" value="%{Txt_StartSubIpList.get(#protocol.index)}" size="40" maxlength="39" cssStyle="ime-mode: disabled" tabindex="4" /> </td> <td class="contents_detail1_td" οnmοuseοver="chgLstBkcolor(this, true)" οnmοuseοut="chgLstBkcolor(this, false)"> <s:textfield id="Txt_PrefixLenList" name="Txt_PrefixLenList" maxlength="3" value="%{Txt_PrefixLenList.get(#protocol.index)}" cssStyle="ime-mode: disabled" tabindex="5"/> </td> </tr> </s:iterator> </table>
后台action:
/** プロトコルリスト */ private List<String> Lst_ProtocolList = new ArrayList<String>(); /** 開始SubscriberIPリスト */ private List<String> Txt_StartSubIpList = new ArrayList<String>(); /** Prefix長リスト */ private List<String> Txt_PrefixLenList = new ArrayList<String>(); /** プロトコルリスト(初期値) */ private String[] Hid_Init_ProtocolList = new String[128]; /** 開始SubscriberIPリスト (初期値) */ private String[] Hid_Init_StartSubIpList = new String[128]; /** Prefix長リスト (初期値) */ private String[] Hid_Init_PrefixLenList = new String[128];
// PBR IPアドレスレンジ情報の最大インデックス int maxPbrIpRangeIndex = -1; if (bean.getPbrIpRangeList() != null && bean.getPbrIpRangeList().size() >= 0) { maxPbrIpRangeIndex = bean.getPbrIpRangeList().size() - 1; } // DBのIPアドレスレンジ情報を画面に表示する。 for (int i = 0; i < 128; i++) { if (i <= maxPbrIpRangeIndex) { MEDdmRouterChangeVo tmp = bean.getPbrIpRangeList().get(i); Lst_ProtocolList.add(tmp.getProtocol()); Txt_StartSubIpList.add(tmp.getStartSubscriberIp()); Txt_PrefixLenList.add(tmp.getPrefixLength()); } else { // 「PBR IPアドレスレンジ」テーブルの中に、該当装置の件数が128件不足の場合 Lst_ProtocolList.add(CommonConst.MEA02_PROTOCOL_IPV4); Txt_StartSubIpList.add(""); Txt_PrefixLenList.add(""); } } // 隠しプロトコルリスト(初期値) Lst_ProtocolList.toArray(this.Hid_Init_ProtocolList); // 隠し開始SubscriberIPリスト (初期値) Txt_StartSubIpList.toArray(this.Hid_Init_StartSubIpList); // 隠しPrefix長リスト (初期値) Txt_PrefixLenList.toArray(this.Hid_Init_PrefixLenList);