﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-Bean Validation</title><link>http://www.blogjava.net/paulwong/category/55377.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Jul 2021 08:14:13 GMT</lastBuildDate><pubDate>Thu, 29 Jul 2021 08:14:13 GMT</pubDate><ttl>60</ttl><item><title>JSR-303 Bean Validation - Grouping Javax Validation Constraints</title><link>http://www.blogjava.net/paulwong/archive/2021/07/29/435937.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 29 Jul 2021 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/07/29/435937.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435937.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/07/29/435937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435937.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@NotBlank(message&nbsp;=&nbsp;"Missing&nbsp;ID_IMG_CHECK.")</div><br />以上标签进行验证时是无条件验证，如果想在特定条件下才验证，则不适用。<br /><br />于是才有如下设定：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@NotBlank(message&nbsp;=&nbsp;"Missing&nbsp;ID_IMG_CHECK.",&nbsp;groups&nbsp;=&nbsp;{GroupA.<span style="color: #0000FF; ">class</span>}&nbsp;)</div><br />手动验证：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Class&lt;?&gt;&nbsp;[]&nbsp;classArray&nbsp;=&nbsp;classList.toArray(<span style="color: #0000FF; ">new</span>&nbsp;Class&lt;?&gt;[0]);<br />LOGGER.info("subVersion&nbsp;:&nbsp;{},&nbsp;Validate&nbsp;class&nbsp;:&nbsp;{}",&nbsp;subVersion,&nbsp;classNameList);<br />CompositeException&nbsp;compositeException&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CompositeException();<br />Set&lt;ConstraintViolation&lt;QueryKycResultDetail&gt;&gt;&nbsp;groupSet&nbsp;=&nbsp;validator.validate(queryKycResultDetail,&nbsp;classArray);</div><br /><a href="https://www.baeldung.com/javax-validation-groups" target="_blank">https://www.baeldung.com/javax-validation-groups</a><img src ="http://www.blogjava.net/paulwong/aggbug/435937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-07-29 10:00 <a href="http://www.blogjava.net/paulwong/archive/2021/07/29/435937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR-303 Bean Validation - @Size和@Max@Min的区别</title><link>http://www.blogjava.net/paulwong/archive/2021/04/29/435867.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 29 Apr 2021 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/04/29/435867.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435867.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/04/29/435867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435867.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: var(--s-prose-spacing); margin-left: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: Arial, &quot;Helvetica Neue&quot;, Helvetica, sans-serif; font-size: 15px; vertical-align: baseline; box-sizing: inherit; clear: both; color: #242729; background-color: #ffffff;"><code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Min</code>&nbsp;and&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Max</code>&nbsp;are used for validating numeric fields which could be&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">String</code>(representing number),&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">int</code>,&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">short</code>,&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">byte</code>&nbsp;etc and their respective primitive wrappers.<br /><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: var(--s-prose-spacing); margin-left: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: Arial, &quot;Helvetica Neue&quot;, Helvetica, sans-serif; font-size: 15px; vertical-align: baseline; box-sizing: inherit; clear: both; color: #242729; background-color: #ffffff;"><code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Size</code>&nbsp;is used to check the length constraints on the fields.<br /><br /></p><p style="margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: Arial, &quot;Helvetica Neue&quot;, Helvetica, sans-serif; font-size: 15px; vertical-align: baseline; box-sizing: inherit; clear: both; color: #242729; background-color: #ffffff;">As per documentation&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Size</code>&nbsp;supports&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">String</code>,&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">Collection</code>,&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">Map</code>&nbsp;and&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">arrays</code>&nbsp;while&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Min</code>&nbsp;and&nbsp;<code style="margin: 0px; padding: 2px 4px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 13px; vertical-align: baseline; box-sizing: inherit; background-color: var(--black-075); white-space: pre-wrap; color: var(--black-800); border-radius: 3px;">@Max</code>&nbsp;supports primitives and their wrappers. See the&nbsp;<a href="http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/" rel="noreferrer" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; cursor: pointer; user-select: auto;">documentation</a>.</p><img src ="http://www.blogjava.net/paulwong/aggbug/435867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-04-29 09:55 <a href="http://www.blogjava.net/paulwong/archive/2021/04/29/435867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR-303 Bean Validation - Date String Validation </title><link>http://www.blogjava.net/paulwong/archive/2021/02/25/435810.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 25 Feb 2021 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/02/25/435810.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435810.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/02/25/435810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435810.html</trackback:ping><description><![CDATA[@Past @Future只针对Date类型的验证，如果是String类型的验证，则不适用。<br />其实可以新加一个方法返回Date类型，再配合@Future@Past&nbsp;进行验证。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@Future(message&nbsp;=&nbsp;"Invalid&nbsp;CN_ID_INFO.EXPIRE_DATE.")<br /><span style="color: #0000FF; ">private</span>&nbsp;LocalDate&nbsp;getValidExpireDate()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;LocalDate.parse(this.dateString,&nbsp;DateTimeFormatter.ofPattern("yyyy-MM-dd"));<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />此方法对dateString进行解释，返回LocalDate，如果dateString为空或格式错误，则返回空，再配合@Future&nbsp;进行是否未来日期的验证。<br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-02-25 09:44 <a href="http://www.blogjava.net/paulwong/archive/2021/02/25/435810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR-303 Bean Validation - Conditional Validation</title><link>http://www.blogjava.net/paulwong/archive/2021/02/25/435809.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 25 Feb 2021 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/02/25/435809.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435809.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/02/25/435809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435809.html</trackback:ping><description><![CDATA[bean validation的注释是针对单个变量的，如果要针对多个变量的联动，则不行，需要用到这个注释。<br />这种方法避免了自定义校验器而增加类。<br /><a href="https://www.chkui.com/article/java/java_bean_validation" target="_blank">https://www.chkui.com/article/java/java_bean_validation</a><br /><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->@AssertTrue(message&nbsp;=&nbsp;"Missing&nbsp;BANK_CARD_IMG_INFO.IMG")<br />
<span style="color: #0000FF; ">private</span>&nbsp;Boolean&nbsp;getValidImg()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(YNEnum.Y.code.equals(<span style="color: #0000FF; ">super</span>.getNeedChecked()))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;StringUtils.hasText(<span style="color: #0000FF; ">this</span>.img);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<span style="color: #008000; ">//</span><span style="color: #008000; ">igore&nbsp;checking.</span><span style="color: #008000; "><br />
</span>}</div><br />这个是当needChecked为Y的时候才执行检查img变量是否为空。<br />有几点注意：<br /><ol><li>方法名称要以get开头<br /></li><li>返回类型用Boolean，而不用boolean<br /></li><li>返回值有三种：true,false,null如果是null则当成通过，与true的结果一样</li></ol><img src ="http://www.blogjava.net/paulwong/aggbug/435809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-02-25 09:24 <a href="http://www.blogjava.net/paulwong/archive/2021/02/25/435809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR-303 Bean Validation</title><link>http://www.blogjava.net/paulwong/archive/2021/01/28/435786.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 28 Jan 2021 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/01/28/435786.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435786.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/01/28/435786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435786.html</trackback:ping><description><![CDATA[接收数据的JAVA BEAN通常需要验证其中字段的正确性，如不准为空，符合EMAIL格式等。<br /><div>JSR-303 Bean Validation则提供了这样的便捷。<br /><br />只要在JAVA BEAN中需要验证的字段加@NotNull这种标签，然后在SERVISE中的输入参数中加@Valid标签，则就激活验证流程。<br />也可以编程的方式自己验证：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@MessageEndpoint<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">@Validated</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;MqMessageCcdValidator&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;Logger&nbsp;LOGGER&nbsp;=&nbsp;LoggerFactory.getLogger(MqMessageCcdValidator.<span style="color: #0000FF; ">class</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Autowired<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;Validator&nbsp;validator;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@ServiceActivator<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;MqMessage&lt;CcdRequest&gt;&nbsp;validate(<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;@Valid&nbsp;</span><span style="color: #008000; ">*/</span>&nbsp;Message&lt;MqMessage&lt;CcdRequest&gt;&gt;&nbsp;requestMessage)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&lt;ConstraintViolation&lt;MqMessage&lt;CcdRequest&gt;&gt;&gt;&nbsp;set&nbsp;=&nbsp;validator.validate(requestMessage.getPayload());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(CollectionUtils.isNotEmpty(set))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompositeException&nbsp;compositeException&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;CompositeException();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set.forEach(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constraintViolation&nbsp;-&gt;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOGGER.info("{}",&nbsp;constraintViolation);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReqInfoValidationException&nbsp;exception&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ReqInfoValidationException(constraintViolation.getMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compositeException.addException(exception);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;MessageHandlingException(requestMessage,&nbsp;compositeException);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestMessage.getPayload();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><br />自定义验证规则<br />可用标签来做，以下为验证手机号的规则：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">import</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;java.lang.annotation.RetentionPolicy.RUNTIME;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.lang.annotation.ElementType;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.lang.annotation.Retention;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.lang.annotation.Target;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;javax.validation.Constraint;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.validation.Payload;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.validation.ReportAsSingleViolation;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.validation.constraints.Pattern;<br /><br />@Retention(RUNTIME)<br />@Target(value&nbsp;=&nbsp;{&nbsp;ElementType.FIELD,&nbsp;ElementType.PARAMETER,&nbsp;ElementType.ANNOTATION_TYPE&nbsp;})<br />@Constraint(validatedBy&nbsp;=&nbsp;{})<br />@ReportAsSingleViolation<br />@Pattern(regexp&nbsp;=&nbsp;"^1[3-9]\\d{9}$")<br /><span style="color: #0000FF; ">public</span>&nbsp;@<span style="color: #0000FF; ">interface</span>&nbsp;ChinaPhone&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;message()&nbsp;<span style="color: #0000FF; ">default</span>&nbsp;"Invalid&nbsp;Chinese&nbsp;mobile&nbsp;No.";<br />&nbsp;&nbsp;&nbsp;&nbsp;Class&lt;?&gt;[]&nbsp;groups()&nbsp;<span style="color: #0000FF; ">default</span>&nbsp;{};<br />&nbsp;&nbsp;&nbsp;&nbsp;Class&lt;?&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;Payload&gt;[]&nbsp;payload()&nbsp;<span style="color: #0000FF; ">default</span>&nbsp;{};<br />}</div><br />如果比较复杂的验证规则，则参见：<br /><a href="https://reflectoring.io/bean-validation-with-spring-boot/#implementing-a-custom-validator" target="_blank">https://reflectoring.io/bean-validation-with-spring-boot/#implementing-a-custom-validator</a><br /><br />How to use Java Bean Validation in Spring Boot<br /><a href="https://nullbeans.com/how-to-use-java-bean-validation-in-spring-boot/" target="_blank">https://nullbeans.com/how-to-use-java-bean-validation-in-spring-boot/</a><br /><br />Complete Guide to Validation With Spring Boot<br /><a href="https://reflectoring.io/bean-validation-with-spring-boot/" target="_blank">https://reflectoring.io/bean-validation-with-spring-boot/</a><br /><br />Spring JMS Validate Messages using JSR-303 Bean Validation<br /><a href="https://memorynotfound.com/spring-jms-validate-messages-jsr-303-bean-validation/" target="_blank">https://memorynotfound.com/spring-jms-validate-messages-jsr-303-bean-validation/</a><br /><br />Spring REST Validation Example<br /><a href="https://mkyong.com/spring-boot/spring-rest-validation-example/" target="_blank">https://mkyong.com/spring-boot/spring-rest-validation-example/<br /><br /></a>Spring Boot 整合 Bean Validation 校验数据<br /><br /><a href="https://blog.csdn.net/wangzhihao1994/article/details/108403732" target="_blank">https://blog.csdn.net/wangzhihao1994/article/details/108403732</a></div><img src ="http://www.blogjava.net/paulwong/aggbug/435786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-01-28 10:35 <a href="http://www.blogjava.net/paulwong/archive/2021/01/28/435786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>