优化业务字典、系统字典、特定服务、协议ip校验处理方式,融合代码
This commit is contained in:
@@ -53,15 +53,13 @@ public class SpecificServiceHostCfgService extends BaseService{
|
||||
public void saveOrUpdate(SpecificServiceHostCfg specificServiceHostCfg) {
|
||||
SysUser user = UserUtils.getUser();
|
||||
String defaultIp = "0.0.0.0"; //缺省0.0.0.0值表示任意
|
||||
String defaultIpMask = "";
|
||||
if(specificServiceHostCfg.getIpType().equals(4)){
|
||||
defaultIpMask = "255.255.255.255"; //255.255.255.255表示无掩码
|
||||
}
|
||||
String defaultIpMask = "255.255.255.255";//255.255.255.255表示无掩码
|
||||
if(specificServiceHostCfg.getIpType().equals(6)){
|
||||
defaultIp = "::"; //缺省::
|
||||
defaultIpMask = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"; //FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF表示无掩码
|
||||
}
|
||||
String defaultPortMask = "65535"; //65535表示无掩码
|
||||
//ip地址默认 缺省0.0.0.0值表示任意
|
||||
//ip地址默认 Ipv4缺省0.0.0.0,ipv6缺省为::
|
||||
if(StringUtil.isBlank(specificServiceHostCfg.getSrcIp())){
|
||||
specificServiceHostCfg.setSrcIp(defaultIp);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ label.errorShow {
|
||||
}
|
||||
});
|
||||
return flagTypeSame;
|
||||
},"请选择正确的数据类型");
|
||||
},"<spring:message code='typeSame'/>");
|
||||
//与下级是否一致
|
||||
jQuery.validator.addMethod("childrenType",function(value,element){
|
||||
var flagChildTypeSame=false;
|
||||
@@ -87,7 +87,7 @@ label.errorShow {
|
||||
}
|
||||
});
|
||||
return flagChildTypeSame;
|
||||
},"该配置包含下级配置,数据类型更改后与子类不一致");
|
||||
},"<spring:message code='typeChild'/>");
|
||||
|
||||
//校验叶子节点有下级不得更改为叶子节点
|
||||
jQuery.validator.addMethod("leafChange",function(value,element){
|
||||
@@ -102,54 +102,19 @@ label.errorShow {
|
||||
}
|
||||
});
|
||||
return flagLeafChange;
|
||||
},"该配置包含下级配置,不得改为叶子节点");
|
||||
},"<spring:message code='leafChange'/>");
|
||||
|
||||
$("#name").focus();
|
||||
validateForm=$("#inputForm").validate({
|
||||
rules: {
|
||||
'itemCode':{
|
||||
required:true,
|
||||
remote:'${ctx}/basics/serviceDictInfo/isItemCodeRepeat?oldItemCode=${serviceDictInfo.itemCode}',
|
||||
maxlength:64
|
||||
},
|
||||
'itemValue':{
|
||||
required:true,
|
||||
maxlength:64
|
||||
},
|
||||
'itemType':{
|
||||
childrenType:true,
|
||||
//remote:'${ctx}/basics/serviceDictInfo/ajaxChildrenType?parent=${serviceDictInfo.serviceDictId}',
|
||||
typeSame:true
|
||||
},
|
||||
'isLeaf':{
|
||||
leafChange:true
|
||||
},
|
||||
'itemDesc':{
|
||||
maxlength:128
|
||||
}
|
||||
|
||||
},
|
||||
messages: {
|
||||
'itemCode':{
|
||||
required:'<spring:message code="required"/>',
|
||||
remote:'<spring:message code="repeat"/>',
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
},
|
||||
'itemValue':{
|
||||
required:'<spring:message code="required"/>',
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
},
|
||||
'itemType':{
|
||||
childrenType:'<spring:message code="typeChild"/>',
|
||||
//remote:'<spring:message code="typeChild"/>',
|
||||
typeSame:'<spring:message code="typeSame"/>'
|
||||
},
|
||||
'isLeaf':{
|
||||
leafChange:'<spring:message code="leafChange"/>'
|
||||
},
|
||||
'itemDesc':{
|
||||
maxlength:'<spring:message code="maxlength_128"/>'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
submitHandler: function(form){
|
||||
@@ -227,7 +192,7 @@ label.errorShow {
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<select id="itemTypeCheckChild" name="itemType" class="form-control">
|
||||
<select id="itemTypeCheckChild" name="itemType" class="form-control childrenType typeSame">
|
||||
<c:forEach items="${fns:getDictList('SERVICE_DICT_ITM_TYPE')}" var="dict">
|
||||
<c:forEach items="${intArr}" var="itTemp">
|
||||
<c:if test="${dict.itemCode eq itTemp}">
|
||||
@@ -241,19 +206,19 @@ label.errorShow {
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="itemCode" htmlEscape="false" maxlength="60" class="form-control"/>
|
||||
<form:input path="itemCode" htmlEscape="false" maxlength="64" class="form-control required noBlankSpace"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="itemValue" htmlEscape="false" maxlength="2000" class="form-control"/>
|
||||
<form:input path="itemValue" htmlEscape="false" maxlength="64" class="form-control required noBlankSpace"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:select path="isLeaf" class="form-control">
|
||||
<form:select path="isLeaf" class="form-control leafChange">
|
||||
<c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
|
||||
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
|
||||
</c:forEach>
|
||||
@@ -263,7 +228,7 @@ label.errorShow {
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:textarea path="itemDesc" htmlEscape="false" maxlength="2000" class="form-control"/>
|
||||
<form:textarea path="itemDesc" htmlEscape="false" maxlength="128" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
}
|
||||
});
|
||||
return flag;
|
||||
},"请选择正确的数据类型");
|
||||
},"<spring:message code='typeSame'/>");
|
||||
|
||||
//校验叶子节点,有下级不得更改为叶子节点
|
||||
jQuery.validator.addMethod("leafChange",function(value,element){
|
||||
@@ -55,52 +55,26 @@
|
||||
}
|
||||
});
|
||||
return flag;
|
||||
},"该配置包含下级配置,不得改为叶子节点");
|
||||
},"<spring:message code='leafChange'/>");
|
||||
|
||||
$("#name").focus();
|
||||
validateForm = $("#inputForm").validate({
|
||||
rules: {
|
||||
'itemCode':{
|
||||
required:true,
|
||||
remote:'${ctx}/basics/sysDictInfo/isItemCodeRepeat?oldItemCode=${sysDictInfo.itemCode}',
|
||||
maxlength:64
|
||||
},
|
||||
'itemValue':{
|
||||
required:true,
|
||||
maxlength:64
|
||||
remote:'${ctx}/basics/sysDictInfo/isItemCodeRepeat?oldItemCode=${sysDictInfo.itemCode}'
|
||||
},
|
||||
'itemType':{
|
||||
remote:'${ctx}/basics/sysDictInfo/ajaxChildrenType?parent=${sysDictInfo.sysDictId}',
|
||||
typeSame:true
|
||||
},
|
||||
'isLeaf':{
|
||||
leafChange:true
|
||||
},
|
||||
'itemDesc':{
|
||||
maxlength:128
|
||||
remote:'${ctx}/basics/sysDictInfo/ajaxChildrenType?parent=${sysDictInfo.sysDictId}'
|
||||
}
|
||||
|
||||
},
|
||||
messages: {
|
||||
'itemCode':{
|
||||
required:'<spring:message code="required"/>',
|
||||
remote:'<spring:message code="repeat"/>',
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
},
|
||||
'itemValue':{
|
||||
required:'<spring:message code="required"/>',
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
remote:'<spring:message code="repeat"/>'
|
||||
},
|
||||
'itemType':{
|
||||
remote:'<spring:message code="typeChild"/>',
|
||||
typeSame:'<spring:message code="typeSame"/>'
|
||||
},
|
||||
'isLeaf':{
|
||||
leafChange:'<spring:message code="leafChange"/>'
|
||||
},
|
||||
'itemDesc':{
|
||||
maxlength:'<spring:message code="maxlength_128"/>'
|
||||
}
|
||||
remote:'<spring:message code="typeChild"/>'
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
@@ -176,7 +150,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<select id="itemType" name="itemType" class="form-control">
|
||||
<select id="itemType" name="itemType" class="form-control typeSame">
|
||||
<c:forEach items="${fns:getDictList('SYS_DICT_ITM_TYPE')}" var="dict">
|
||||
<c:forEach items="${intArr}" var="itTemp">
|
||||
<c:if test="${dict.itemCode eq itTemp}">
|
||||
@@ -190,13 +164,13 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="itemCode" htmlEscape="false" maxlength="50" class="form-control"/>
|
||||
<form:input path="itemCode" htmlEscape="false" maxlength="64" class="form-control required noBlankSpace"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="itemValue" htmlEscape="false" maxlength="2000" class="form-control"/>
|
||||
<form:input path="itemValue" htmlEscape="false" maxlength="64" class="form-control required noBlankSpace"/>
|
||||
</div>
|
||||
</div>
|
||||
<c:if test="${specType != null and specType==3 }">
|
||||
@@ -206,7 +180,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:select path="isLeaf" class="form-control">
|
||||
<form:select path="isLeaf" class="form-control leafChange">
|
||||
<c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
|
||||
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
|
||||
</c:forEach>
|
||||
@@ -217,7 +191,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:textarea path="itemDesc" htmlEscape="false" maxlength="2000" class="form-control"/>
|
||||
<form:textarea path="itemDesc" htmlEscape="false" maxlength="128" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(isinit){
|
||||
confirmx("<spring:message code='confirm_message'/>", url+"&mulitId="+mulitId);
|
||||
}else{
|
||||
top.$.jBox.tip("<spring:message code='has_initianlize'/>", "<spring:message code='info'/>");
|
||||
top.$.jBox.tip("<spring:message code='initial_data_is_not_allowed_to_delete'/>", "<spring:message code='info'/>");
|
||||
}
|
||||
}else{
|
||||
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
|
||||
@@ -68,7 +68,7 @@
|
||||
if(${fns:getUser().loginId=='admin'}){
|
||||
confirmx("<spring:message code='confirm_message'/>", url+"&sysDictId="+cked.val());
|
||||
}else{
|
||||
top.$.jBox.tip("<spring:message code='hasnopower_toedit_initianlize.'/>", "<spring:message code='info'/>");
|
||||
top.$.jBox.tip("<spring:message code='initial_data_is_not_allowed_to_edit.'/>", "<spring:message code='info'/>");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,24 +8,6 @@
|
||||
<script type="text/javascript">
|
||||
var validateForm;
|
||||
$(document).ready(function() {
|
||||
jQuery.validator.addMethod("maxValue", function(value, element) {
|
||||
return value >=0&&value<2100000000;
|
||||
}, "请填写正确的协议id");
|
||||
//校验叶子节点无上级不得选为叶子节点
|
||||
jQuery.validator.addMethod("leafHasTree",function(value,element){
|
||||
var flagLeafHasTree=false;
|
||||
$.ajax({
|
||||
type:'post',
|
||||
async:false,
|
||||
url:'${ctx}/specific/specificServiceCfg/ajaxLeafHasTree',
|
||||
data:{parentId:$("#specificServiceCfgId").val(),newIsLeaf:$("#isLeaf option:selected").val()},
|
||||
success:function(data){
|
||||
flagLeafHasTree=data;
|
||||
}
|
||||
});
|
||||
return flagLeafHasTree;
|
||||
},"该配置上级为根节点,不得设为叶子节点");
|
||||
|
||||
//校验叶子节点有下级不得更改为叶子节点
|
||||
jQuery.validator.addMethod("leafChange",function(value,element){
|
||||
var flagLeafChange=false;
|
||||
@@ -39,55 +21,20 @@
|
||||
}
|
||||
});
|
||||
return flagLeafChange;
|
||||
},"该配置包含下级配置,不得改为叶子节点");
|
||||
},"<spring:message code='leafChange'/>");
|
||||
|
||||
$("#name").focus();
|
||||
validateForm = $("#inputForm").validate({
|
||||
rules:{
|
||||
specServiceId:{
|
||||
required:true,
|
||||
digits:true,
|
||||
max: 2100000000,
|
||||
remote:'${ctx}/specific/specificServiceCfg/isIdRepeat?oldId=${specificServiceCfg.specServiceId}'
|
||||
},
|
||||
specServiceName:{
|
||||
required:true,
|
||||
maxlength:64
|
||||
},
|
||||
groupId:{
|
||||
digits:true,
|
||||
max:2100000000
|
||||
},
|
||||
isLeaf:{
|
||||
//leafHasTree:true,
|
||||
leafChange:true
|
||||
},
|
||||
specServiceDesc:{
|
||||
maxlength:64
|
||||
}
|
||||
|
||||
groupId:{max:2100000000}
|
||||
},
|
||||
messages: {
|
||||
specServiceId:{
|
||||
required:'<spring:message code="required"/>',
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max: '<spring:message code="input_integer"/>',
|
||||
remote:'<spring:message code="repeat"/>'
|
||||
},
|
||||
specServiceName:{
|
||||
required:'<spring:message code="required"/>',
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
},
|
||||
groupId:{
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max:'<spring:message code="input_integer"/>'
|
||||
},
|
||||
isLeaf:{
|
||||
//leafHasTree:'该配置上级为根节点,不得设为叶子节点',
|
||||
leafChange:'<spring:message code="leafChange"/>'
|
||||
},
|
||||
specServiceDesc:{
|
||||
maxlength:'<spring:message code="maxlength_64"/>'
|
||||
}
|
||||
},
|
||||
|
||||
@@ -95,7 +42,7 @@
|
||||
if(!validateForm.form()) {
|
||||
return false;
|
||||
}
|
||||
loading('正在提交,请稍等...');
|
||||
loading('<spring:message code="submitting"/>');
|
||||
form.submit();
|
||||
},
|
||||
errorContainer: "#messageBox",
|
||||
@@ -162,25 +109,25 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_id"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<input id="specServiceId" name="specServiceId" maxlength="50" class="form-control" value="${specificServiceCfg.specServiceId}"/>
|
||||
<input id="specServiceId" name="specServiceId" maxlength="50" class="form-control required digits max" value="${specificServiceCfg.specServiceId}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_name"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="specServiceName" htmlEscape="false" maxlength="50" class="form-control"/>
|
||||
<form:input path="specServiceName" htmlEscape="false" maxlength="64" class="form-control required noBlankSpace"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code="group_id"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:input path="groupId" htmlEscape="false" maxlength="50" class="form-control" placeholder="0"/>
|
||||
<form:input path="groupId" htmlEscape="false" maxlength="50" class="form-control digits" placeholder="0"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:select path="isLeaf" class="form-control">
|
||||
<form:select path="isLeaf" class="form-control leafChange">
|
||||
<c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
|
||||
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
|
||||
</c:forEach>
|
||||
@@ -190,7 +137,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code="protocol_desc"/>:</label>
|
||||
<div class="col-md-4">
|
||||
<form:textarea path="specServiceDesc" htmlEscape="false" maxlength="2000" class="form-control"/>
|
||||
<form:textarea path="specServiceDesc" htmlEscape="false" maxlength="64" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
|
||||
@@ -4,28 +4,21 @@
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="${ctxStatic}/pages/css/dictInfo.css" />
|
||||
<script type="text/javascript" src="${ctxStatic}/pages/scripts/dict.js"></script>
|
||||
<title></title>
|
||||
<script type="text/javascript">
|
||||
var validateForm;
|
||||
function selectP(){
|
||||
$("label[for='specServiceId']").hide();
|
||||
}
|
||||
$(document).ready(function() {
|
||||
$("[data-toogle='tooltip']").tooltip();
|
||||
$("select[name='ipType']").on("change",function(){
|
||||
var type=$(this).val();
|
||||
if(4==type){
|
||||
$("input[name='srcIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : 0.0.0.0");
|
||||
$("input[name='dstIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : 0.0.0.0");
|
||||
$("input[name='srcIpMask']").attr("title","<spring:message code='arbitrary'/> : 0.0.0.0");
|
||||
$("input[name='dstIpMask']").attr("title","<spring:message code='arbitrary'/> : 0.0.0.0");
|
||||
}
|
||||
if(6==type){
|
||||
$("input[name='srcIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : \"::\"");
|
||||
$("input[name='dstIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : \"::\"");
|
||||
$("input[name='srcIpMask']").attr("title","<spring:message code='arbitrary'/> : \"::\"");
|
||||
$("input[name='dstIpMask']").attr("title","<spring:message code='arbitrary'/> : \"::\"");
|
||||
}
|
||||
});
|
||||
//specServiceId校验,处理校验不能及时显示
|
||||
@@ -37,44 +30,7 @@ function selectP(){
|
||||
return true;
|
||||
}
|
||||
}, "请选择协议名称");
|
||||
//ip地址校验
|
||||
jQuery.validator.addMethod("ip",function(value, element) {
|
||||
if(value.length==0||value.trim().length==0){return true;}
|
||||
var typeInt=$("select[name='ipType']").val();
|
||||
if(typeInt==4){
|
||||
return this.optional(element)||(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.test(value) && (RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256));
|
||||
}else if(typeInt==6){
|
||||
return this.optional(element)||/^\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*$/.test(value);
|
||||
}}, "请填写正确的IP地址");
|
||||
//ip地址掩码校验
|
||||
jQuery.validator.addMethod("ipMask",function(value, element) {
|
||||
if(value.length==0||value.trim().length==0){return true;}
|
||||
obj=value;
|
||||
var typeInt=$("select[name='ipType']").val();
|
||||
if(typeInt==4){
|
||||
if(obj=="255.255.255.255"){
|
||||
return true;
|
||||
}else{
|
||||
var exp=/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/;
|
||||
var reg = obj.match(exp);
|
||||
if(reg==null){return false;}else{return true}
|
||||
}
|
||||
}else if(typeInt==6){
|
||||
if(obj=="FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"||obj==0||obj=="::"){
|
||||
return true;
|
||||
}else{return (obj > 0) && ((obj & (obj - 1)) == 0)};
|
||||
}
|
||||
}, "请填写正确的IP地址掩码");
|
||||
//掩码校验,超过两位不得以0开头
|
||||
jQuery.validator.addMethod("notStartZero",function(value, element) {
|
||||
if(value.length>1&value.length<6){
|
||||
var str = value.substr(0,1);
|
||||
if(str == '0'){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}, "请填写正确的数值");
|
||||
|
||||
$("#name").focus();
|
||||
validateForm = $("#inputForm")
|
||||
.validate(
|
||||
@@ -83,106 +39,22 @@ function selectP(){
|
||||
specServiceId:{
|
||||
specServiceIdSelected:true
|
||||
},
|
||||
protocol:{
|
||||
required:true
|
||||
},
|
||||
ipType:{
|
||||
required:true
|
||||
},
|
||||
srcIp:{
|
||||
ip:true
|
||||
},
|
||||
dstIp:{
|
||||
ip:true
|
||||
},
|
||||
srcIpMask:{
|
||||
ipMask:true
|
||||
},
|
||||
dstIpMask:{
|
||||
ipMask:true
|
||||
},
|
||||
srcPort:{
|
||||
required:true,
|
||||
digits:true,
|
||||
max: 65535,
|
||||
min: 0,
|
||||
notStartZero:true
|
||||
},
|
||||
dstPort:{
|
||||
required:true,
|
||||
digits:true,
|
||||
max: 65535,
|
||||
min: 0,
|
||||
notStartZero:true
|
||||
},
|
||||
srcPortMask:{
|
||||
digits:true,
|
||||
max: 65535,
|
||||
min: 0,
|
||||
notStartZero:true
|
||||
},
|
||||
dstPortMask:{
|
||||
digits:true,
|
||||
max: 65535,
|
||||
min: 0,
|
||||
notStartZero:true
|
||||
}
|
||||
srcPort:{max: 65535,min: 0},
|
||||
dstPort:{max: 65535,min: 0},
|
||||
srcPortMask:{max: 65535,min: 0},
|
||||
dstPortMask:{max: 65535,min: 0}
|
||||
},
|
||||
messages : {
|
||||
specServiceId:{
|
||||
specServiceIdSelected:'<spring:message code="required"/>'
|
||||
},
|
||||
protocol:{
|
||||
required:'<spring:message code="required"/>'
|
||||
},
|
||||
ipType:{
|
||||
required:'<spring:message code="required"/>'
|
||||
},
|
||||
srcIp:{
|
||||
ip:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
dstIp:{
|
||||
ip:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
srcIpMask:{
|
||||
ipMask:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
dstIpMask:{
|
||||
ipMask:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
srcPort:{
|
||||
required:'<spring:message code="required"/>',
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max: '<spring:message code="max_value"/> 65535',
|
||||
min: '<spring:message code="min_value"/>0',
|
||||
notStartZero:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
dstPort:{
|
||||
required:'<spring:message code="required"/>',
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max: '<spring:message code="max_value"/> 65535',
|
||||
min: '<spring:message code="min_value"/>0',
|
||||
notStartZero:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
srcPortMask:{
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max: '<spring:message code="max_value"/> 65535',
|
||||
min: '<spring:message code="min_value"/>0',
|
||||
notStartZero:'<spring:message code="enter_error"/>'
|
||||
},
|
||||
dstPortMask:{
|
||||
digits:'<spring:message code="input_integer"/>',
|
||||
max: '<spring:message code="max_value"/> 65535',
|
||||
min: '<spring:message code="min_value"/>0',
|
||||
notStartZero:'<spring:message code="enter_error"/>'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
submitHandler : function(form) {
|
||||
if (!validateForm.form()) {
|
||||
return false;
|
||||
}
|
||||
loading('正在提交,请稍等...');
|
||||
loading('<spring:message code="submitting"/>');
|
||||
form.submit();
|
||||
},
|
||||
errorContainer : "#messageBox",
|
||||
@@ -277,7 +149,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='protocol' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:select path="protocol" class="select2 form-control" >
|
||||
<form:select path="protocol" class="select2 form-control required" >
|
||||
<form:option value=""><spring:message code='select' /></form:option>
|
||||
<c:forEach items="${fns:getDictList('SPEC_PROTOCOL')}" var="dict">
|
||||
<form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option>
|
||||
@@ -290,8 +162,8 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='ip_type' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:select path="ipType" class="select2 form-control" >
|
||||
<form:option value=""><spring:message code='select' /></form:option>
|
||||
<form:select path="ipType" class="select2 form-control required" >
|
||||
<%-- <form:option value=""><spring:message code='select' /></form:option> --%>
|
||||
<c:forEach items="${fns:getDictList('SPEC_IP_TYPE')}" var="dict">
|
||||
<form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option>
|
||||
</c:forEach>
|
||||
@@ -310,7 +182,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='client_ip' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="srcIp" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryValue}" placeholder="${arbitraryValue}"/>
|
||||
<form:input path="srcIp" htmlEscape="false" maxlength="50" class="form-control ipCheck" placeholder="${arbitraryValue}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -318,7 +190,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='server_ip' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="dstIp" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryValue}" placeholder="${arbitraryValue}"/>
|
||||
<form:input path="dstIp" htmlEscape="false" maxlength="50" class="form-control ipCheck" placeholder="${arbitraryValue}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -329,7 +201,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='client_address_mask' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="srcIpMask" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" title="${arbitraryValue}" data-placement="top" placeholder="${arbitraryValue}"/>
|
||||
<form:input path="srcIpMask" htmlEscape="false" maxlength="50" class="form-control ipMask" placeholder="${arbitraryValue}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -337,7 +209,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='server_address_mask' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="dstIpMask" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryValue}" placeholder="${arbitraryValue}"/>
|
||||
<form:input path="dstIpMask" htmlEscape="false" maxlength="50" class="form-control ipMask" placeholder="${arbitraryValue}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -348,7 +220,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='client_port' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="srcPort" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryPort}" placeholder="${arbitraryPort}"/>
|
||||
<form:input path="srcPort" htmlEscape="false" maxlength="50" class="form-control required digits notStartZero" placeholder="${arbitraryPort}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -356,7 +228,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='server_port' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="dstPort" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryPort}" placeholder="${arbitraryPort}"/>
|
||||
<form:input path="dstPort" htmlEscape="false" maxlength="50" class="form-control required digits notStartZero" placeholder="${arbitraryPort}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -366,7 +238,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='client_port_mask' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="srcPortMask" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryPort}" placeholder="${arbitraryPort}"/>
|
||||
<form:input path="srcPortMask" htmlEscape="false" maxlength="50" class="form-control digits notStartZero" placeholder="${arbitraryPort}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -374,7 +246,7 @@ function selectP(){
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><spring:message code='server_port_mask' />:</label>
|
||||
<div class="col-md-6">
|
||||
<form:input path="dstPortMask" htmlEscape="false" maxlength="50" class="form-control" data-toggle="tooltip" data-placement="top" title="${arbitraryPort}" placeholder="${arbitraryPort}"/>
|
||||
<form:input path="dstPortMask" htmlEscape="false" maxlength="50" class="form-control digits notStartZero" placeholder="${arbitraryPort}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -150,3 +150,47 @@ jQuery.validator.addMethod("regexPassword", function(value, element) {
|
||||
return this.optional(element) || /^(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/.test(value);
|
||||
}, "一个大写,一个小写,一个符号");
|
||||
|
||||
//输入内容不得为空格
|
||||
jQuery.validator.addMethod("noBlankSpace", function(value, element) {
|
||||
return $.trim(value) != "";
|
||||
}, "不能填写空格");
|
||||
|
||||
//掩码校验,超过两位不得以0开头
|
||||
jQuery.validator.addMethod("notStartZero",function(value, element) {
|
||||
if(value.length>1&&value.length<6){
|
||||
var str = value.substr(0,1);
|
||||
if(str == '0'){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}, "请填写正确的数值");
|
||||
|
||||
//ip地址校验
|
||||
jQuery.validator.addMethod("ipCheck",function(value, element) {
|
||||
if(value.length==0||value.trim().length==0){return true;}
|
||||
var typeInt=$("select[name$='ipType']").val();
|
||||
if(typeInt==4){
|
||||
return this.optional(element)||(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.test(value) && (RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256));
|
||||
}else if(typeInt==6){
|
||||
return this.optional(element)||/^\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*$/.test(value);
|
||||
}}, "请填写正确的IP地址");
|
||||
//ip地址掩码校验
|
||||
jQuery.validator.addMethod("ipMask",function(value, element) {
|
||||
if(value.length==0||value.trim().length==0){return true;}
|
||||
obj=value;
|
||||
var typeInt=$("select[name$='ipType']").val();
|
||||
if(typeInt==4){
|
||||
if(obj=="255.255.255.255"){
|
||||
return true;
|
||||
}else{
|
||||
var exp=/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/;
|
||||
var reg = obj.match(exp);
|
||||
if(reg==null){return false;}else{return true}
|
||||
}
|
||||
}else if(typeInt==6){
|
||||
if(obj=="FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"||obj==0||obj=="::"){
|
||||
return true;
|
||||
}else{return (obj > 0) && ((obj & (obj - 1)) == 0)};
|
||||
}
|
||||
}, "请填写正确的IP地址掩码");
|
||||
@@ -20,6 +20,11 @@
|
||||
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
|
||||
range: $.validator.format("Please enter a value between {0} and {1}."),
|
||||
max: $.validator.format("Please enter a value less than or equal to {0}."),
|
||||
min: $.validator.format("Please enter a value greater than or equal to {0}.")
|
||||
min: $.validator.format("Please enter a value greater than or equal to {0}."),
|
||||
checkIp: $.validator.format("Please enter a correct IP address."),
|
||||
noBlankSpace:"can not be space",
|
||||
ipCheck:"Please enter a valid ip",
|
||||
ipMask:"Please enter a valid ip mask",
|
||||
notStartZero:"Please enter a valid Integer"
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
|
||||
range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
|
||||
max: $.validator.format("请输入一个最大为 {0} 的值"),
|
||||
min: $.validator.format("请输入一个最小为 {0} 的值")
|
||||
min: $.validator.format("请输入一个最小为 {0} 的值"),
|
||||
checkIp: $.validator.format("请输入一个合法的IP"),
|
||||
noBlankSpace:"不能为空格",
|
||||
ipCheck:"请填写正确的IP地址",
|
||||
ipMask:"请填写正确的IP地址掩码",
|
||||
notStartZero:"请填写正确的数值"
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
Reference in New Issue
Block a user