优化业务字典、系统字典、特定服务、协议ip校验处理方式,融合代码

This commit is contained in:
zhangshilin
2018-04-08 17:41:55 +08:00
parent b2ae24021a
commit fb19efed18
9 changed files with 108 additions and 298 deletions

View File

@@ -53,15 +53,13 @@ public class SpecificServiceHostCfgService extends BaseService{
public void saveOrUpdate(SpecificServiceHostCfg specificServiceHostCfg) { public void saveOrUpdate(SpecificServiceHostCfg specificServiceHostCfg) {
SysUser user = UserUtils.getUser(); SysUser user = UserUtils.getUser();
String defaultIp = "0.0.0.0"; //缺省0.0.0.0值表示任意 String defaultIp = "0.0.0.0"; //缺省0.0.0.0值表示任意
String defaultIpMask = ""; String defaultIpMask = "255.255.255.255";//255.255.255.255表示无掩码
if(specificServiceHostCfg.getIpType().equals(4)){
defaultIpMask = "255.255.255.255"; //255.255.255.255表示无掩码
}
if(specificServiceHostCfg.getIpType().equals(6)){ if(specificServiceHostCfg.getIpType().equals(6)){
defaultIp = "::"; //缺省::
defaultIpMask = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"; //FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF表示无掩码 defaultIpMask = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"; //FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF表示无掩码
} }
String defaultPortMask = "65535"; //65535表示无掩码 String defaultPortMask = "65535"; //65535表示无掩码
//ip地址默认 缺省0.0.0.0值表示任意 //ip地址默认 Ipv4缺省0.0.0.0,ipv6缺省为::
if(StringUtil.isBlank(specificServiceHostCfg.getSrcIp())){ if(StringUtil.isBlank(specificServiceHostCfg.getSrcIp())){
specificServiceHostCfg.setSrcIp(defaultIp); specificServiceHostCfg.setSrcIp(defaultIp);
} }

View File

@@ -72,7 +72,7 @@ label.errorShow {
} }
}); });
return flagTypeSame; return flagTypeSame;
},"请选择正确的数据类型"); },"<spring:message code='typeSame'/>");
//与下级是否一致 //与下级是否一致
jQuery.validator.addMethod("childrenType",function(value,element){ jQuery.validator.addMethod("childrenType",function(value,element){
var flagChildTypeSame=false; var flagChildTypeSame=false;
@@ -87,7 +87,7 @@ label.errorShow {
} }
}); });
return flagChildTypeSame; return flagChildTypeSame;
},"该配置包含下级配置,数据类型更改后与子类不一致"); },"<spring:message code='typeChild'/>");
//校验叶子节点有下级不得更改为叶子节点 //校验叶子节点有下级不得更改为叶子节点
jQuery.validator.addMethod("leafChange",function(value,element){ jQuery.validator.addMethod("leafChange",function(value,element){
@@ -102,54 +102,19 @@ label.errorShow {
} }
}); });
return flagLeafChange; return flagLeafChange;
},"该配置包含下级配置,不得改为叶子节点"); },"<spring:message code='leafChange'/>");
$("#name").focus(); $("#name").focus();
validateForm=$("#inputForm").validate({ validateForm=$("#inputForm").validate({
rules: { rules: {
'itemCode':{ 'itemCode':{
required:true,
remote:'${ctx}/basics/serviceDictInfo/isItemCodeRepeat?oldItemCode=${serviceDictInfo.itemCode}', 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: { messages: {
'itemCode':{ 'itemCode':{
required:'<spring:message code="required"/>',
remote:'<spring:message code="repeat"/>', 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){ submitHandler: function(form){
@@ -227,7 +192,7 @@ label.errorShow {
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label> <label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label>
<div class="col-md-4"> <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="${fns:getDictList('SERVICE_DICT_ITM_TYPE')}" var="dict">
<c:forEach items="${intArr}" var="itTemp"> <c:forEach items="${intArr}" var="itTemp">
<c:if test="${dict.itemCode eq itTemp}"> <c:if test="${dict.itemCode eq itTemp}">
@@ -241,19 +206,19 @@ label.errorShow {
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
<div class="col-md-4"> <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"> <c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option> <form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
</c:forEach> </c:forEach>
@@ -263,7 +228,7 @@ label.errorShow {
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label> <label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-actions"> <div class="form-actions">

View File

@@ -40,7 +40,7 @@
} }
}); });
return flag; return flag;
},"请选择正确的数据类型"); },"<spring:message code='typeSame'/>");
//校验叶子节点,有下级不得更改为叶子节点 //校验叶子节点,有下级不得更改为叶子节点
jQuery.validator.addMethod("leafChange",function(value,element){ jQuery.validator.addMethod("leafChange",function(value,element){
@@ -55,52 +55,26 @@
} }
}); });
return flag; return flag;
},"该配置包含下级配置,不得改为叶子节点"); },"<spring:message code='leafChange'/>");
$("#name").focus(); $("#name").focus();
validateForm = $("#inputForm").validate({ validateForm = $("#inputForm").validate({
rules: { rules: {
'itemCode':{ 'itemCode':{
required:true, remote:'${ctx}/basics/sysDictInfo/isItemCodeRepeat?oldItemCode=${sysDictInfo.itemCode}'
remote:'${ctx}/basics/sysDictInfo/isItemCodeRepeat?oldItemCode=${sysDictInfo.itemCode}',
maxlength:64
},
'itemValue':{
required:true,
maxlength:64
}, },
'itemType':{ 'itemType':{
remote:'${ctx}/basics/sysDictInfo/ajaxChildrenType?parent=${sysDictInfo.sysDictId}', remote:'${ctx}/basics/sysDictInfo/ajaxChildrenType?parent=${sysDictInfo.sysDictId}'
typeSame:true
},
'isLeaf':{
leafChange:true
},
'itemDesc':{
maxlength:128
} }
}, },
messages: { messages: {
'itemCode':{ 'itemCode':{
required:'<spring:message code="required"/>', remote:'<spring:message code="repeat"/>'
remote:'<spring:message code="repeat"/>',
maxlength:'<spring:message code="maxlength_64"/>'
},
'itemValue':{
required:'<spring:message code="required"/>',
maxlength:'<spring:message code="maxlength_64"/>'
}, },
'itemType':{ 'itemType':{
remote:'<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"/>'
}
}, },
@@ -176,7 +150,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label> <label class="col-md-3 control-label radio-lable"><font color="red">*</font> <spring:message code="item_type"/>:</label>
<div class="col-md-4"> <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="${fns:getDictList('SYS_DICT_ITM_TYPE')}" var="dict">
<c:forEach items="${intArr}" var="itTemp"> <c:forEach items="${intArr}" var="itTemp">
<c:if test="${dict.itemCode eq itTemp}"> <c:if test="${dict.itemCode eq itTemp}">
@@ -190,13 +164,13 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="item_code"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="config_content"/>:</label>
<div class="col-md-4"> <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> </div>
<c:if test="${specType != null and specType==3 }"> <c:if test="${specType != null and specType==3 }">
@@ -206,7 +180,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
<div class="col-md-4"> <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"> <c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option> <form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
</c:forEach> </c:forEach>
@@ -217,7 +191,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label> <label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-actions"> <div class="form-actions">

View File

@@ -44,7 +44,7 @@
if(isinit){ if(isinit){
confirmx("<spring:message code='confirm_message'/>", url+"&mulitId="+mulitId); confirmx("<spring:message code='confirm_message'/>", url+"&mulitId="+mulitId);
}else{ }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{ }else{
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
@@ -68,7 +68,7 @@
if(${fns:getUser().loginId=='admin'}){ if(${fns:getUser().loginId=='admin'}){
confirmx("<spring:message code='confirm_message'/>", url+"&sysDictId="+cked.val()); confirmx("<spring:message code='confirm_message'/>", url+"&sysDictId="+cked.val());
}else{ }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'/>");
} }
} }

View File

@@ -8,24 +8,6 @@
<script type="text/javascript"> <script type="text/javascript">
var validateForm; var validateForm;
$(document).ready(function() { $(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){ jQuery.validator.addMethod("leafChange",function(value,element){
var flagLeafChange=false; var flagLeafChange=false;
@@ -39,55 +21,20 @@
} }
}); });
return flagLeafChange; return flagLeafChange;
},"该配置包含下级配置,不得改为叶子节点"); },"<spring:message code='leafChange'/>");
$("#name").focus(); $("#name").focus();
validateForm = $("#inputForm").validate({ validateForm = $("#inputForm").validate({
rules:{ rules:{
specServiceId:{ specServiceId:{
required:true,
digits:true,
max: 2100000000, max: 2100000000,
remote:'${ctx}/specific/specificServiceCfg/isIdRepeat?oldId=${specificServiceCfg.specServiceId}' remote:'${ctx}/specific/specificServiceCfg/isIdRepeat?oldId=${specificServiceCfg.specServiceId}'
}, },
specServiceName:{ groupId:{max:2100000000}
required:true,
maxlength:64
},
groupId:{
digits:true,
max:2100000000
},
isLeaf:{
//leafHasTree:true,
leafChange:true
},
specServiceDesc:{
maxlength:64
}
}, },
messages: { messages: {
specServiceId:{ specServiceId:{
required:'<spring:message code="required"/>',
digits:'<spring:message code="input_integer"/>',
max: '<spring:message code="input_integer"/>',
remote:'<spring:message code="repeat"/>' 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()) { if(!validateForm.form()) {
return false; return false;
} }
loading('正在提交,请稍等...'); loading('<spring:message code="submitting"/>');
form.submit(); form.submit();
}, },
errorContainer: "#messageBox", errorContainer: "#messageBox",
@@ -162,25 +109,25 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_id"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_id"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_name"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="protocol_name"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code="group_id"/>:</label> <label class="col-md-3 control-label"><spring:message code="group_id"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code="is_leaf"/>:</label>
<div class="col-md-4"> <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"> <c:forEach items="${fns:getDictList('INT_YES_NO')}" var="dict">
<form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option> <form:option value="${dict.itemCode}"><spring:message code="${dict.itemValue}"/></form:option>
</c:forEach> </c:forEach>
@@ -190,7 +137,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code="protocol_desc"/>:</label> <label class="col-md-3 control-label"><spring:message code="protocol_desc"/>:</label>
<div class="col-md-4"> <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> </div>
<div class="form-actions"> <div class="form-actions">

View File

@@ -4,28 +4,21 @@
<head> <head>
<link rel="stylesheet" type="text/css" <link rel="stylesheet" type="text/css"
href="${ctxStatic}/pages/css/dictInfo.css" /> href="${ctxStatic}/pages/css/dictInfo.css" />
<script type="text/javascript" src="${ctxStatic}/pages/scripts/dict.js"></script>
<title></title>
<script type="text/javascript"> <script type="text/javascript">
var validateForm; var validateForm;
function selectP(){ function selectP(){
$("label[for='specServiceId']").hide(); $("label[for='specServiceId']").hide();
} }
$(document).ready(function() { $(document).ready(function() {
$("[data-toogle='tooltip']").tooltip();
$("select[name='ipType']").on("change",function(){ $("select[name='ipType']").on("change",function(){
var type=$(this).val(); var type=$(this).val();
if(4==type){ if(4==type){
$("input[name='srcIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : 0.0.0.0"); $("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='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){ if(6==type){
$("input[name='srcIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : \"::\""); $("input[name='srcIpMask']").attr("placeholder","<spring:message code='arbitrary'/> : \"::\"");
$("input[name='dstIpMask']").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校验,处理校验不能及时显示 //specServiceId校验,处理校验不能及时显示
@@ -37,44 +30,7 @@ function selectP(){
return true; 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(); $("#name").focus();
validateForm = $("#inputForm") validateForm = $("#inputForm")
.validate( .validate(
@@ -83,106 +39,22 @@ function selectP(){
specServiceId:{ specServiceId:{
specServiceIdSelected:true specServiceIdSelected:true
}, },
protocol:{ srcPort:{max: 65535,min: 0},
required:true dstPort:{max: 65535,min: 0},
}, srcPortMask:{max: 65535,min: 0},
ipType:{ dstPortMask:{max: 65535,min: 0}
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
}
}, },
messages : { messages : {
specServiceId:{ specServiceId:{
specServiceIdSelected:'<spring:message code="required"/>' 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) { submitHandler : function(form) {
if (!validateForm.form()) { if (!validateForm.form()) {
return false; return false;
} }
loading('正在提交,请稍等...'); loading('<spring:message code="submitting"/>');
form.submit(); form.submit();
}, },
errorContainer : "#messageBox", errorContainer : "#messageBox",
@@ -277,7 +149,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='protocol' />:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code='protocol' />:</label>
<div class="col-md-6"> <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> <form:option value=""><spring:message code='select' /></form:option>
<c:forEach items="${fns:getDictList('SPEC_PROTOCOL')}" var="dict"> <c:forEach items="${fns:getDictList('SPEC_PROTOCOL')}" var="dict">
<form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option> <form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option>
@@ -290,8 +162,8 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='ip_type' />:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code='ip_type' />:</label>
<div class="col-md-6"> <div class="col-md-6">
<form:select path="ipType" class="select2 form-control" > <form:select path="ipType" class="select2 form-control required" >
<form:option value=""><spring:message code='select' /></form:option> <%-- <form:option value=""><spring:message code='select' /></form:option> --%>
<c:forEach items="${fns:getDictList('SPEC_IP_TYPE')}" var="dict"> <c:forEach items="${fns:getDictList('SPEC_IP_TYPE')}" var="dict">
<form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option> <form:option value="${dict.itemCode}"><spring:message code='${dict.itemValue}' /></form:option>
</c:forEach> </c:forEach>
@@ -310,7 +182,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='client_ip' />:</label> <label class="col-md-3 control-label"><spring:message code='client_ip' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -318,7 +190,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='server_ip' />:</label> <label class="col-md-3 control-label"><spring:message code='server_ip' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -329,7 +201,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='client_address_mask' />:</label> <label class="col-md-3 control-label"><spring:message code='client_address_mask' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -337,7 +209,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='server_address_mask' />:</label> <label class="col-md-3 control-label"><spring:message code='server_address_mask' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -348,7 +220,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='client_port' />:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code='client_port' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -356,7 +228,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><font color="red">*</font><spring:message code='server_port' />:</label> <label class="col-md-3 control-label"><font color="red">*</font><spring:message code='server_port' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -366,7 +238,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='client_port_mask' />:</label> <label class="col-md-3 control-label"><spring:message code='client_port_mask' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>
@@ -374,7 +246,7 @@ function selectP(){
<div class="form-group"> <div class="form-group">
<label class="col-md-3 control-label"><spring:message code='server_port_mask' />:</label> <label class="col-md-3 control-label"><spring:message code='server_port_mask' />:</label>
<div class="col-md-6"> <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> </div>
</div> </div>

View File

@@ -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); 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地址掩码");

View File

@@ -20,6 +20,11 @@
rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
range: $.validator.format("Please enter a value between {0} and {1}."), range: $.validator.format("Please enter a value between {0} and {1}."),
max: $.validator.format("Please enter a value less than or equal to {0}."), 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)); }(jQuery));

View File

@@ -20,6 +20,11 @@
rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"), rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"), range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
max: $.validator.format("请输入一个最大为 {0} 的值"), max: $.validator.format("请输入一个最大为 {0} 的值"),
min: $.validator.format("请输入一个最小为 {0} 的值") min: $.validator.format("请输入一个最小为 {0} 的值"),
checkIp: $.validator.format("请输入一个合法的IP"),
noBlankSpace:"不能为空格",
ipCheck:"请填写正确的IP地址",
ipMask:"请填写正确的IP地址掩码",
notStartZero:"请填写正确的数值"
}); });
}(jQuery)); }(jQuery));