优化业务字典、系统字典、特定服务、协议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) {
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);
}

View File

@@ -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,53 +102,18 @@ 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"/>'
}
},
@@ -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">

View File

@@ -40,7 +40,7 @@
}
});
return flag;
},"请选择正确的数据类型");
},"<spring:message code='typeSame'/>");
//校验叶子节点,有下级不得更改为叶子节点
jQuery.validator.addMethod("leafChange",function(value,element){
@@ -55,51 +55,25 @@
}
});
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">

View File

@@ -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'/>");
}
}

View File

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

View File

@@ -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,98 +39,14 @@ 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"/>'
}
},
@@ -182,7 +54,7 @@ function selectP(){
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>

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);
}, "一个大写,一个小写,一个符号");
//输入内容不得为空格
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."),
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));

View File

@@ -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));