27 changed files with 635 additions and 174 deletions
@ -1,20 +0,0 @@ |
|||
<template> |
|||
<q-card class="shadow-transition"> |
|||
<q-card-section class="row items-center q-pb-none"> |
|||
<div class="text-h6">{{ $t('about') }}</div> |
|||
<q-space /> |
|||
<q-btn v-close-popup icon="close" flat round dense /> |
|||
</q-card-section> |
|||
|
|||
<q-card-section> |
|||
<div class="row justify-items-center"> |
|||
<div class="text-base w-full text-center py-4 font-bold">{{ $t('application.title') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('version') }} : {{ $t('application.version') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('springbootVersion') }} : {{ $t('springboot.version') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('application.copyright') }}</div> |
|||
</div> |
|||
</q-card-section> |
|||
<q-card-section></q-card-section> |
|||
</q-card> |
|||
</template> |
|||
<script setup lang="ts"></script> |
@ -0,0 +1,39 @@ |
|||
<template> |
|||
<q-dialog ref="dialogRef"> |
|||
<q-card class="shadow-transition"> |
|||
<q-card-section class="row items-center q-pb-none"> |
|||
<div class="text-h6">{{ $t('about') }}</div> |
|||
<q-space /> |
|||
<q-btn v-close-popup icon="close" flat round dense /> |
|||
</q-card-section> |
|||
|
|||
<q-card-section> |
|||
<div class="row justify-items-center"> |
|||
<div class="text-base w-full text-center py-4 font-bold">{{ $t('application.title') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('version') }} : {{ $t('application.version') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('springbootVersion') }} : {{ $t('springboot.version') }}</div> |
|||
<div class="text-base w-full text-center">{{ $t('application.copyright') }}</div> |
|||
</div> |
|||
</q-card-section> |
|||
<q-card-section></q-card-section> |
|||
</q-card> |
|||
</q-dialog> |
|||
</template> |
|||
<script setup lang="ts"> |
|||
import { ref } from 'vue'; |
|||
|
|||
const dialogRef = ref(); |
|||
|
|||
const open = () => { |
|||
dialogRef.value.show(); |
|||
}; |
|||
|
|||
const close = () => { |
|||
dialogRef.value.hide(); |
|||
}; |
|||
|
|||
defineExpose({ |
|||
open, |
|||
close, |
|||
}); |
|||
</script> |
@ -0,0 +1,41 @@ |
|||
package io.sc.platform.core.util; |
|||
|
|||
import io.sc.platform.core.response.ValidateException; |
|||
import io.sc.platform.core.response.ValidationError; |
|||
import org.springframework.validation.BindingResult; |
|||
import org.springframework.validation.FieldError; |
|||
|
|||
import javax.validation.MessageInterpolator; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
public class ValidatorUtil { |
|||
public static ValidateException validate(BindingResult bindingResult) throws ValidateException { |
|||
if(bindingResult==null || !bindingResult.hasErrors()){ |
|||
return null; |
|||
} |
|||
List<FieldError> errors =bindingResult.getFieldErrors(); |
|||
if(errors==null || errors.size()==0){ |
|||
return null; |
|||
} |
|||
|
|||
List<ValidationError> errorList =new ArrayList<ValidationError>(); |
|||
for(FieldError error : errors){ |
|||
Object[] objects =error.getArguments(); |
|||
for(Object o : objects){ |
|||
System.out.println(o.getClass().getName()); |
|||
} |
|||
errorList.add(new ValidationError(getFieldName(error.getField()),error.getDefaultMessage())); |
|||
} |
|||
throw new ValidateException(errorList); |
|||
} |
|||
|
|||
private static String getFieldName(String field){ |
|||
int index =field.lastIndexOf("."); |
|||
if(index>-1){ |
|||
return field.substring(index+1); |
|||
}else{ |
|||
return field; |
|||
} |
|||
} |
|||
} |
@ -1,9 +1,11 @@ |
|||
{ |
|||
"includes":[ |
|||
"io/sc/platform/core/i18n/enums", |
|||
"io/sc/platform/core/i18n/exception", |
|||
"io/sc/platform/core/i18n/language", |
|||
"io/sc/platform/core/i18n/messages", |
|||
"io/sc/platform/core/i18n/network-error", |
|||
"io/sc/platform/core/i18n/words" |
|||
"io/sc/platform/core/i18n/words", |
|||
"io/sc/platform/core/i18n/validator" |
|||
] |
|||
} |
@ -0,0 +1,2 @@ |
|||
io.sc.platform.core.response.ValidateException=Request Parameter Validate Error |
|||
io.sc.platform.orm.api.exception.UserRawPasswordNotMatchException=Raw Password Error |
@ -0,0 +1,2 @@ |
|||
io.sc.platform.core.response.ValidateException=\u8ACB\u6C42\u53C3\u6578\u9A57\u8B49\u932F\u8AA4 |
|||
io.sc.platform.orm.api.exception.UserRawPasswordNotMatchException=\u539F\u5BC6\u78BC\u932F\u8AA4 |
@ -0,0 +1,2 @@ |
|||
io.sc.platform.core.response.ValidateException=\u8BF7\u6C42\u53C2\u6570\u9A8C\u8BC1\u9519\u8BEF |
|||
io.sc.platform.orm.api.exception.UserRawPasswordNotMatchException=\u539F\u5BC6\u7801\u9519\u8BEF |
@ -0,0 +1,55 @@ |
|||
javax.validation.constraints.AssertFalse.message = must be false |
|||
javax.validation.constraints.AssertTrue.message = must be true |
|||
javax.validation.constraints.DecimalMax.message = must be less than ${inclusive == true ? 'or equal to ' : ''}{value} |
|||
javax.validation.constraints.DecimalMin.message = must be greater than ${inclusive == true ? 'or equal to ' : ''}{value} |
|||
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) |
|||
javax.validation.constraints.Email.message = must be a well-formed email address |
|||
javax.validation.constraints.Future.message = must be a future date |
|||
javax.validation.constraints.FutureOrPresent.message = must be a date in the present or in the future |
|||
javax.validation.constraints.Max.message = must be less than or equal to {value} |
|||
javax.validation.constraints.Min.message = must be greater than or equal to {value} |
|||
javax.validation.constraints.Negative.message = must be less than 0 |
|||
javax.validation.constraints.NegativeOrZero.message = must be less than or equal to 0 |
|||
javax.validation.constraints.NotBlank.message = must not be blank |
|||
javax.validation.constraints.NotEmpty.message = must not be empty |
|||
javax.validation.constraints.NotNull.message = must not be null |
|||
javax.validation.constraints.Null.message = must be null |
|||
javax.validation.constraints.Past.message = must be a past date |
|||
javax.validation.constraints.PastOrPresent.message = must be a date in the past or in the present |
|||
javax.validation.constraints.Pattern.message = must match "{regexp}" |
|||
javax.validation.constraints.Positive.message = must be greater than 0 |
|||
javax.validation.constraints.PositiveOrZero.message = must be greater than or equal to 0 |
|||
javax.validation.constraints.Size.message = size must be between {min} and {max} |
|||
|
|||
org.hibernate.validator.constraints.CreditCardNumber.message = invalid credit card number |
|||
org.hibernate.validator.constraints.Currency.message = invalid currency (must be one of {value}) |
|||
org.hibernate.validator.constraints.EAN.message = invalid {type} barcode |
|||
org.hibernate.validator.constraints.Email.message = not a well-formed email address |
|||
org.hibernate.validator.constraints.ISBN.message = invalid ISBN |
|||
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} |
|||
org.hibernate.validator.constraints.CodePointLength.message = length must be between {min} and {max} |
|||
org.hibernate.validator.constraints.LuhnCheck.message = the check digit for ${validatedValue} is invalid, Luhn Modulo 10 checksum failed |
|||
org.hibernate.validator.constraints.Mod10Check.message = the check digit for ${validatedValue} is invalid, Modulo 10 checksum failed |
|||
org.hibernate.validator.constraints.Mod11Check.message = the check digit for ${validatedValue} is invalid, Modulo 11 checksum failed |
|||
org.hibernate.validator.constraints.ModCheck.message = the check digit for ${validatedValue} is invalid, {modType} checksum failed |
|||
org.hibernate.validator.constraints.Normalized.message = must be normalized |
|||
org.hibernate.validator.constraints.NotBlank.message = may not be empty |
|||
org.hibernate.validator.constraints.NotEmpty.message = may not be empty |
|||
org.hibernate.validator.constraints.ParametersScriptAssert.message = script expression "{script}" didn't evaluate to true |
|||
org.hibernate.validator.constraints.Range.message = must be between {min} and {max} |
|||
org.hibernate.validator.constraints.ScriptAssert.message = script expression "{script}" didn't evaluate to true |
|||
org.hibernate.validator.constraints.UniqueElements.message = must only contain unique elements |
|||
org.hibernate.validator.constraints.URL.message = must be a valid URL |
|||
|
|||
org.hibernate.validator.constraints.br.CNPJ.message = invalid Brazilian corporate taxpayer registry number (CNPJ) |
|||
org.hibernate.validator.constraints.br.CPF.message = invalid Brazilian individual taxpayer registry number (CPF) |
|||
org.hibernate.validator.constraints.br.TituloEleitoral.message = invalid Brazilian Voter ID card number |
|||
|
|||
org.hibernate.validator.constraints.pl.REGON.message = invalid Polish Taxpayer Identification Number (REGON) |
|||
org.hibernate.validator.constraints.pl.NIP.message = invalid VAT Identification Number (NIP) |
|||
org.hibernate.validator.constraints.pl.PESEL.message = invalid Polish National Identification Number (PESEL) |
|||
|
|||
org.hibernate.validator.constraints.ru.INN.message = invalid Russian taxpayer identification number (INN) |
|||
|
|||
org.hibernate.validator.constraints.time.DurationMax.message = must be shorter than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} |
|||
org.hibernate.validator.constraints.time.DurationMin.message = must be longer than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} |
@ -0,0 +1,52 @@ |
|||
javax.validation.constraints.AssertFalse.message = \u5FC5\u9808\u662F false |
|||
javax.validation.constraints.AssertTrue.message = \u5FC5\u9808\u662F true |
|||
javax.validation.constraints.DecimalMax.message = \u5FC5\u9808\u5C0F\u65BC ${inclusive == true ? 'or equal to ' : ''}{value} |
|||
javax.validation.constraints.DecimalMin.message = \u5FC5\u9808\u5927\u65BC ${inclusive == true ? 'or equal to ' : ''}{value} |
|||
javax.validation.constraints.Digits.message = \u6578\u503C\u8D85\u51FA\u7BC4\u570D\uFF08\u9810\u671F\u70BA <{integer} digits>.<{fraction} digits>\uFF09 |
|||
javax.validation.constraints.Email.message = \u5FC5\u9808\u662F\u5F62\u5F0F\u5B8C\u6574\u7684\u96FB\u5B50\u90F5\u4EF6\u4F4D\u5740 |
|||
javax.validation.constraints.Future.message = \u5FC5\u9808\u662F\u672A\u4F86\u7684\u65E5\u671F |
|||
javax.validation.constraints.FutureOrPresent.message = \u5FC5\u9808\u662F\u7576\u5929\u6216\u672A\u4F86\u7684\u65E5\u671F |
|||
javax.validation.constraints.Max.message = \u5FC5\u9808\u5C0F\u65BC\u6216\u7B49\u65BC {value} |
|||
javax.validation.constraints.Min.message = \u5FC5\u9808\u5927\u65BC\u6216\u7B49\u65BC {value} |
|||
javax.validation.constraints.Negative.message = \u5FC5\u9808\u5C0F\u65BC 0 |
|||
javax.validation.constraints.NegativeOrZero.message = \u5FC5\u9808\u5C0F\u65BC\u6216\u7B49\u65BC 0 |
|||
javax.validation.constraints.NotBlank.message = \u4E0D\u5F97\u7A7A\u767D |
|||
javax.validation.constraints.NotEmpty.message = \u4E0D\u5F97\u662F\u7A7A\u7684 |
|||
javax.validation.constraints.NotNull.message = \u4E0D\u5F97\u662F\u7A7A\u503C |
|||
javax.validation.constraints.Null.message = \u5FC5\u9808\u662F\u7A7A\u503C |
|||
javax.validation.constraints.Past.message = \u5FC5\u9808\u662F\u904E\u53BB\u7684\u65E5\u671F |
|||
javax.validation.constraints.PastOrPresent.message = \u5FC5\u9808\u662F\u904E\u53BB\u6216\u7576\u5929\u7684\u65E5\u671F |
|||
javax.validation.constraints.Pattern.message = \u5FC5\u9808\u7B26\u5408 "{regexp}" |
|||
javax.validation.constraints.Positive.message = \u5FC5\u9808\u5927\u65BC 0 |
|||
javax.validation.constraints.PositiveOrZero.message = \u5FC5\u9808\u5927\u65BC\u6216\u7B49\u65BC 0 |
|||
javax.validation.constraints.Size.message = \u5927\u5C0F\u5FC5\u9808\u5728 {min} \u548C {max} \u4E4B\u9593 |
|||
|
|||
org.hibernate.validator.constraints.CreditCardNumber.message = \u7121\u6548\u7684\u4FE1\u7528\u5361\u5361\u865F |
|||
org.hibernate.validator.constraints.Currency.message = \u7121\u6548\u7684\u8CA8\u5E63\uFF08\u5FC5\u9808\u662F {value} \u4E4B\u4E00\uFF09 |
|||
org.hibernate.validator.constraints.EAN.message = \u7121\u6548\u7684 {type} \u689D\u78BC |
|||
org.hibernate.validator.constraints.Email.message = \u4E0D\u662F\u5F62\u5F0F\u5B8C\u6574\u7684\u96FB\u5B50\u90F5\u4EF6\u4F4D\u5740 |
|||
org.hibernate.validator.constraints.ISBN.message = \u7121\u6548\u7684 ISBN |
|||
org.hibernate.validator.constraints.Length.message = \u9577\u5EA6\u5FC5\u9808\u5728 {min} \u548C {max} \u4E4B\u9593 |
|||
org.hibernate.validator.constraints.CodePointLength.message = \u9577\u5EA6\u5FC5\u9808\u5728 {min} \u548C {max} \u4E4B\u9593 |
|||
org.hibernate.validator.constraints.LuhnCheck.message = ${validatedValue} \u7684\u6AA2\u67E5\u78BC\u7121\u6548\uFF0CLuhn \u6A21\u6578 10 \u7E3D\u548C\u6AA2\u67E5\u5931\u6557 |
|||
org.hibernate.validator.constraints.Mod10Check.message = ${validatedValue} \u7684\u6AA2\u67E5\u78BC\u7121\u6548\uFF0C\u6A21\u6578 10 \u7E3D\u548C\u6AA2\u67E5\u5931\u6557 |
|||
org.hibernate.validator.constraints.Mod11Check.message = ${validatedValue} \u7684\u6AA2\u67E5\u78BC\u7121\u6548\uFF0C\u6A21\u6578 11 \u7E3D\u548C\u6AA2\u67E5\u5931\u6557 |
|||
org.hibernate.validator.constraints.ModCheck.message = ${validatedValue} \u7684\u6AA2\u67E5\u78BC\u7121\u6548\uFF0C{modType} \u7E3D\u548C\u6AA2\u67E5\u5931\u6557 |
|||
org.hibernate.validator.constraints.NotBlank.message = \u4E0D\u80FD\u662F\u7A7A\u7684 |
|||
org.hibernate.validator.constraints.NotEmpty.message = \u4E0D\u80FD\u662F\u7A7A\u7684 |
|||
org.hibernate.validator.constraints.ParametersScriptAssert.message = Script \u8868\u793A\u5F0F "{script}" \u4E0D\u662F\u6C42\u503C\u70BA true |
|||
org.hibernate.validator.constraints.Range.message = \u5FC5\u9808\u5728 {min} \u548C {max} \u4E4B\u9593 |
|||
org.hibernate.validator.constraints.ScriptAssert.message = Script \u8868\u793A\u5F0F "{script}" \u4E0D\u662F\u6C42\u503C\u70BA true |
|||
org.hibernate.validator.constraints.UniqueElements.message = \u53EA\u80FD\u5305\u542B\u552F\u4E00\u5143\u7D20 |
|||
org.hibernate.validator.constraints.URL.message = \u5FC5\u9808\u662F\u6709\u6548\u7684 URL |
|||
|
|||
org.hibernate.validator.constraints.br.CNPJ.message = \u7121\u6548\u7684\u5DF4\u897F\u516C\u53F8\u7D0D\u7A05\u767B\u9304\u78BC (CNPJ) |
|||
org.hibernate.validator.constraints.br.CPF.message = \u7121\u6548\u7684\u5DF4\u897F\u500B\u4EBA\u7D0D\u7A05\u767B\u9304\u78BC (CPF) |
|||
org.hibernate.validator.constraints.br.TituloEleitoral.message = \u7121\u6548\u7684\u5DF4\u897F\u9078\u6C11 ID \u5361\u865F |
|||
|
|||
org.hibernate.validator.constraints.pl.REGON.message = \u7121\u6548\u7684\u6CE2\u862D\u7D0D\u7A05\u4EBA\u8B58\u5225\u78BC (REGON) |
|||
org.hibernate.validator.constraints.pl.NIP.message = \u7121\u6548\u7684 VAT \u8B58\u5225\u78BC (NIP) |
|||
org.hibernate.validator.constraints.pl.PESEL.message = \u7121\u6548\u7684\u6CE2\u862D\u570B\u5BB6\u8B58\u5225\u78BC (PESEL) |
|||
|
|||
org.hibernate.validator.constraints.time.DurationMax.message = \u5FC5\u9808\u77ED\u65BC ${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} |
|||
org.hibernate.validator.constraints.time.DurationMin.message = \u5FC5\u9808\u9577\u65BC ${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} |
@ -0,0 +1,42 @@ |
|||
javax.validation.constraints.AssertFalse.message = \u53EA\u80FD\u4E3Afalse |
|||
javax.validation.constraints.AssertTrue.message = \u53EA\u80FD\u4E3Atrue |
|||
javax.validation.constraints.DecimalMax.message = \u5FC5\u987B\u5C0F\u4E8E${inclusive == true ? '\u6216\u7B49\u4E8E' : ''}{value} |
|||
javax.validation.constraints.DecimalMin.message = \u5FC5\u987B\u5927\u4E8E${inclusive == true ? '\u6216\u7B49\u4E8E' : ''}{value} |
|||
javax.validation.constraints.Digits.message = \u6570\u5B57\u7684\u503C\u8D85\u51FA\u4E86\u5141\u8BB8\u8303\u56F4(\u53EA\u5141\u8BB8\u5728{integer}\u4F4D\u6574\u6570\u548C{fraction}\u4F4D\u5C0F\u6570\u8303\u56F4\u5185) |
|||
javax.validation.constraints.Email.message = \u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740 |
|||
javax.validation.constraints.Future.message = \u9700\u8981\u662F\u4E00\u4E2A\u5C06\u6765\u7684\u65F6\u95F4 |
|||
javax.validation.constraints.FutureOrPresent.message = \u9700\u8981\u662F\u4E00\u4E2A\u5C06\u6765\u6216\u73B0\u5728\u7684\u65F6\u95F4 |
|||
javax.validation.constraints.Max.message = \u6700\u5927\u4E0D\u80FD\u8D85\u8FC7{value} |
|||
javax.validation.constraints.Min.message = \u6700\u5C0F\u4E0D\u80FD\u5C0F\u4E8E{value} |
|||
javax.validation.constraints.Negative.message = \u5FC5\u987B\u662F\u8D1F\u6570 |
|||
javax.validation.constraints.NegativeOrZero.message = \u5FC5\u987B\u662F\u8D1F\u6570\u6216\u96F6 |
|||
javax.validation.constraints.NotBlank.message = \u4E0D\u80FD\u4E3A\u7A7A |
|||
javax.validation.constraints.NotEmpty.message = \u4E0D\u80FD\u4E3A\u7A7A |
|||
javax.validation.constraints.NotNull.message = \u4E0D\u80FD\u4E3Anull |
|||
javax.validation.constraints.Null.message = \u5FC5\u987B\u4E3Anull |
|||
javax.validation.constraints.Past.message = \u9700\u8981\u662F\u4E00\u4E2A\u8FC7\u53BB\u7684\u65F6\u95F4 |
|||
javax.validation.constraints.PastOrPresent.message = \u9700\u8981\u662F\u4E00\u4E2A\u8FC7\u53BB\u6216\u73B0\u5728\u7684\u65F6\u95F4 |
|||
javax.validation.constraints.Pattern.message = \u9700\u8981\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F"{regexp}" |
|||
javax.validation.constraints.Positive.message = \u5FC5\u987B\u662F\u6B63\u6570 |
|||
javax.validation.constraints.PositiveOrZero.message = \u5FC5\u987B\u662F\u6B63\u6570\u6216\u96F6 |
|||
javax.validation.constraints.Size.message = \u4E2A\u6570\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4 |
|||
|
|||
org.hibernate.validator.constraints.CreditCardNumber.message = \u4E0D\u5408\u6CD5\u7684\u4FE1\u7528\u5361\u53F7\u7801 |
|||
org.hibernate.validator.constraints.Currency.message = \u4E0D\u5408\u6CD5\u7684\u8D27\u5E01 (\u5FC5\u987B\u662F{value}\u5176\u4E2D\u4E4B\u4E00) |
|||
org.hibernate.validator.constraints.EAN.message = \u4E0D\u5408\u6CD5\u7684{type}\u6761\u5F62\u7801 |
|||
org.hibernate.validator.constraints.Email.message = \u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740 |
|||
org.hibernate.validator.constraints.Length.message = \u957F\u5EA6\u9700\u8981\u5728{min}\u548C{max}\u4E4B\u95F4 |
|||
org.hibernate.validator.constraints.CodePointLength.message = \u957F\u5EA6\u9700\u8981\u5728{min}\u548C{max}\u4E4B\u95F4 |
|||
org.hibernate.validator.constraints.LuhnCheck.message = ${validatedValue}\u7684\u6821\u9A8C\u7801\u4E0D\u5408\u6CD5, Luhn\u6A2110\u6821\u9A8C\u548C\u4E0D\u5339\u914D |
|||
org.hibernate.validator.constraints.Mod10Check.message = ${validatedValue}\u7684\u6821\u9A8C\u7801\u4E0D\u5408\u6CD5, \u6A2110\u6821\u9A8C\u548C\u4E0D\u5339\u914D |
|||
org.hibernate.validator.constraints.Mod11Check.message = ${validatedValue}\u7684\u6821\u9A8C\u7801\u4E0D\u5408\u6CD5, \u6A2111\u6821\u9A8C\u548C\u4E0D\u5339\u914D |
|||
org.hibernate.validator.constraints.ModCheck.message = ${validatedValue}\u7684\u6821\u9A8C\u7801\u4E0D\u5408\u6CD5, {modType}\u6821\u9A8C\u548C\u4E0D\u5339\u914D |
|||
org.hibernate.validator.constraints.NotBlank.message = \u4E0D\u80FD\u4E3A\u7A7A |
|||
org.hibernate.validator.constraints.NotEmpty.message = \u4E0D\u80FD\u4E3A\u7A7A |
|||
org.hibernate.validator.constraints.ParametersScriptAssert.message = \u6267\u884C\u811A\u672C\u8868\u8FBE\u5F0F"{script}"\u6CA1\u6709\u8FD4\u56DE\u671F\u671B\u7ED3\u679C |
|||
org.hibernate.validator.constraints.Range.message = \u9700\u8981\u5728{min}\u548C{max}\u4E4B\u95F4 |
|||
org.hibernate.validator.constraints.ScriptAssert.message = \u6267\u884C\u811A\u672C\u8868\u8FBE\u5F0F"{script}"\u6CA1\u6709\u8FD4\u56DE\u671F\u671B\u7ED3\u679C |
|||
org.hibernate.validator.constraints.URL.message = \u9700\u8981\u662F\u4E00\u4E2A\u5408\u6CD5\u7684URL |
|||
|
|||
org.hibernate.validator.constraints.time.DurationMax.message = \u5FC5\u987B\u5C0F\u4E8E${inclusive == true ? '\u6216\u7B49\u4E8E' : ''}${days == 0 ? '' : days += '\u5929'}${hours == 0 ? '' : hours += '\u5C0F\u65F6'}${minutes == 0 ? '' : minutes += '\u5206\u949F'}${seconds == 0 ? '' : seconds += '\u79D2'}${millis == 0 ? '' : millis += '\u6BEB\u79D2'}${nanos == 0 ? '' : nanos += '\u7EB3\u79D2'} |
|||
org.hibernate.validator.constraints.time.DurationMin.message = \u5FC5\u987B\u5927\u4E8E${inclusive == true ? '\u6216\u7B49\u4E8E' : ''}${days == 0 ? '' : days += '\u5929'}${hours == 0 ? '' : hours += '\u5C0F\u65F6'}${minutes == 0 ? '' : minutes += '\u5206\u949F'}${seconds == 0 ? '' : seconds += '\u79D2'}${millis == 0 ? '' : millis += '\u6BEB\u79D2'}${nanos == 0 ? '' : nanos += '\u7EB3\u79D2'} |
@ -0,0 +1,172 @@ |
|||
package io.sc.platform.mvc.autoconfigure.support; |
|||
|
|||
import org.apache.commons.logging.Log; |
|||
import org.apache.commons.logging.LogFactory; |
|||
import org.springframework.lang.Nullable; |
|||
import org.springframework.util.ObjectUtils; |
|||
import org.springframework.util.StringUtils; |
|||
import org.springframework.web.servlet.HandlerInterceptor; |
|||
import org.springframework.web.servlet.LocaleResolver; |
|||
import org.springframework.web.servlet.support.RequestContextUtils; |
|||
|
|||
import javax.servlet.ServletException; |
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.util.Locale; |
|||
|
|||
public class RequestHeaderLocaleChangeInterceptor implements HandlerInterceptor { |
|||
|
|||
/** |
|||
* Default name of the locale specification parameter: "locale". |
|||
*/ |
|||
public static final String DEFAULT_PARAM_NAME = "locale"; |
|||
|
|||
|
|||
protected final Log logger = LogFactory.getLog(getClass()); |
|||
|
|||
private String paramName = DEFAULT_PARAM_NAME; |
|||
|
|||
@Nullable |
|||
private String[] httpMethods; |
|||
|
|||
private boolean ignoreInvalidLocale = false; |
|||
|
|||
|
|||
/** |
|||
* Set the name of the parameter that contains a locale specification |
|||
* in a locale change request. Default is "locale". |
|||
*/ |
|||
public void setParamName(String paramName) { |
|||
this.paramName = paramName; |
|||
} |
|||
|
|||
/** |
|||
* Return the name of the parameter that contains a locale specification |
|||
* in a locale change request. |
|||
*/ |
|||
public String getParamName() { |
|||
return this.paramName; |
|||
} |
|||
|
|||
/** |
|||
* Configure the HTTP method(s) over which the locale can be changed. |
|||
* @param httpMethods the methods |
|||
* @since 4.2 |
|||
*/ |
|||
public void setHttpMethods(@Nullable String... httpMethods) { |
|||
this.httpMethods = httpMethods; |
|||
} |
|||
|
|||
/** |
|||
* Return the configured HTTP methods. |
|||
* @since 4.2 |
|||
*/ |
|||
@Nullable |
|||
public String[] getHttpMethods() { |
|||
return this.httpMethods; |
|||
} |
|||
|
|||
/** |
|||
* Set whether to ignore an invalid value for the locale parameter. |
|||
* @since 4.2.2 |
|||
*/ |
|||
public void setIgnoreInvalidLocale(boolean ignoreInvalidLocale) { |
|||
this.ignoreInvalidLocale = ignoreInvalidLocale; |
|||
} |
|||
|
|||
/** |
|||
* Return whether to ignore an invalid value for the locale parameter. |
|||
* @since 4.2.2 |
|||
*/ |
|||
public boolean isIgnoreInvalidLocale() { |
|||
return this.ignoreInvalidLocale; |
|||
} |
|||
|
|||
/** |
|||
* Specify whether to parse request parameter values as BCP 47 language tags |
|||
* instead of Java's legacy locale specification format. |
|||
* <p><b>NOTE: As of 5.1, this resolver leniently accepts the legacy |
|||
* {@link Locale#toString} format as well as BCP 47 language tags.</b> |
|||
* @since 4.3 |
|||
* @see Locale#forLanguageTag(String) |
|||
* @see Locale#toLanguageTag() |
|||
* @deprecated as of 5.1 since it only accepts {@code true} now |
|||
*/ |
|||
@Deprecated |
|||
public void setLanguageTagCompliant(boolean languageTagCompliant) { |
|||
if (!languageTagCompliant) { |
|||
throw new IllegalArgumentException("LocaleChangeInterceptor always accepts BCP 47 language tags"); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Return whether to use BCP 47 language tags instead of Java's legacy |
|||
* locale specification format. |
|||
* @since 4.3 |
|||
* @deprecated as of 5.1 since it always returns {@code true} now |
|||
*/ |
|||
@Deprecated |
|||
public boolean isLanguageTagCompliant() { |
|||
return true; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) |
|||
throws ServletException { |
|||
String newLocale = request.getHeader("locale"); |
|||
if(!StringUtils.hasText(newLocale)){ |
|||
newLocale =request.getParameter(getParamName()); |
|||
} |
|||
if (newLocale != null) { |
|||
if (checkHttpMethod(request.getMethod())) { |
|||
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); |
|||
if (localeResolver == null) { |
|||
throw new IllegalStateException( |
|||
"No LocaleResolver found: not in a DispatcherServlet request?"); |
|||
} |
|||
try { |
|||
localeResolver.setLocale(request, response, parseLocaleValue(newLocale)); |
|||
} |
|||
catch (IllegalArgumentException ex) { |
|||
if (isIgnoreInvalidLocale()) { |
|||
if (logger.isDebugEnabled()) { |
|||
logger.debug("Ignoring invalid locale value [" + newLocale + "]: " + ex.getMessage()); |
|||
} |
|||
} |
|||
else { |
|||
throw ex; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
// Proceed in any case.
|
|||
return true; |
|||
} |
|||
|
|||
private boolean checkHttpMethod(String currentMethod) { |
|||
String[] configuredMethods = getHttpMethods(); |
|||
if (ObjectUtils.isEmpty(configuredMethods)) { |
|||
return true; |
|||
} |
|||
for (String configuredMethod : configuredMethods) { |
|||
if (configuredMethod.equalsIgnoreCase(currentMethod)) { |
|||
return true; |
|||
} |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
/** |
|||
* Parse the given locale value as coming from a request parameter. |
|||
* <p>The default implementation calls {@link StringUtils#parseLocale(String)}, |
|||
* accepting the {@link Locale#toString} format as well as BCP 47 language tags. |
|||
* @param localeValue the locale value to parse |
|||
* @return the corresponding {@code Locale} instance |
|||
* @since 4.3 |
|||
*/ |
|||
@Nullable |
|||
protected Locale parseLocaleValue(String localeValue) { |
|||
return StringUtils.parseLocale(localeValue); |
|||
} |
|||
} |
@ -0,0 +1,40 @@ |
|||
package io.sc.platform.system.user.service.support; |
|||
|
|||
import javax.validation.constraints.NotEmpty; |
|||
import javax.validation.constraints.Size; |
|||
|
|||
public class ChangePassword { |
|||
@NotEmpty |
|||
@Size(min = 1,max = 4) |
|||
private String rawPassword; |
|||
|
|||
@NotEmpty |
|||
private String newPassword; |
|||
|
|||
@NotEmpty |
|||
private String confirmNewPassword; |
|||
|
|||
public String getRawPassword() { |
|||
return rawPassword; |
|||
} |
|||
|
|||
public void setRawPassword(String rawPassword) { |
|||
this.rawPassword = rawPassword; |
|||
} |
|||
|
|||
public String getNewPassword() { |
|||
return newPassword; |
|||
} |
|||
|
|||
public void setNewPassword(String newPassword) { |
|||
this.newPassword = newPassword; |
|||
} |
|||
|
|||
public String getConfirmNewPassword() { |
|||
return confirmNewPassword; |
|||
} |
|||
|
|||
public void setConfirmNewPassword(String confirmNewPassword) { |
|||
this.confirmNewPassword = confirmNewPassword; |
|||
} |
|||
} |
Loading…
Reference in new issue