Java 使用属性或参数进行Mule自定义验证
我们正在尝试将现有代码迁移到Mule,为了完成所有验证,我们需要定制验证器更强大,以支持以下功能:Java 使用属性或参数进行Mule自定义验证,java,validation,mule,anypoint-studio,Java,Validation,Mule,Anypoint Studio,我们正在尝试将现有代码迁移到Mule,为了完成所有验证,我们需要定制验证器更强大,以支持以下功能: <RULE> <ID crosssite="Y" stoponerr="Y">CheckAmount</ID> <MSG>Err_CheckAmount</MSG> <PARAM name="isIndex"></PARAM> <PARAM name="ccyIdField"&
<RULE>
<ID crosssite="Y" stoponerr="Y">CheckAmount</ID>
<MSG>Err_CheckAmount</MSG>
<PARAM name="isIndex"></PARAM>
<PARAM name="ccyIdField"></PARAM>
<PARAM name="ccyListField"></PARAM>
<PARAM name="ccyField">HKD</PARAM>
</RULE>
支票金额
错误支票金额
港币
其中CheckAmount是一个验证器类,并获取一个参数列表,因此它可以基于参数验证所有内容
我注意到很多年前在下面的评论中已经提出了这个问题。
那个么骡子有这样的东西吗
<validation:all doc:name="Validate min">
<validation:validations>
<validation:custom-validator class="test.CheckVal" message="Err_CheckValue">
**<validation:param name="CITY">HK</validation:param>
<validation:param name="MIN">20</validation:param>
<validation:param name="MAX">50</validation:param>**
</validation:custom-validator>
<validation:is-false expression=""/>
</validation:validations>
</validation:all>
**香港
20
50**
因此,当我实现验证器接口时,我可以根据参数进行验证
提前感谢您必须使用Springbean作为验证器。所有可配置的属性都必须可以通过公共get/set方法访问(在本例中为属性min和max) Java类示例:
package de.codecentric;
import org.mule.api.MuleEvent;
import org.mule.extension.validation.api.ValidationResult;
import org.mule.extension.validation.api.Validator;
import org.mule.extension.validation.internal.ImmutableValidationResult;
public class CustomValidator implements Validator {
private int min;
private int max;
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
@Override
public ValidationResult validate(MuleEvent event) {
Object payload = event.getMessage().getPayload();
if (!(payload instanceof Number)) {
return ImmutableValidationResult.error("Not a number: " + payload);
}
Number number = (Number) payload;
if (number.intValue() > max) {
return ImmutableValidationResult.error("Too big: " + number);
}
if (number.intValue() < min) {
return ImmutableValidationResult.error("Too small: " + number);
}
return ImmutableValidationResult.ok();
}
}
package de.codecentric;
导入org.mule.api.MuleEvent;
导入org.mule.extension.validation.api.ValidationResult;
导入org.mule.extension.validation.api.Validator;
导入org.mule.extension.validation.internal.ImmutableValidationResult;
公共类CustomValidator实现验证器{
私用int min;
私人int max;
公共int getMin(){
返回最小值;
}
公共无效设置最小值(整数最小值){
this.min=min;
}
公共int getMax(){
返回最大值;
}
公共void setMax(int max){
this.max=max;
}
@凌驾
公共验证结果验证(多事件事件){
对象负载=event.getMessage().getPayload();
如果(!(有效负载实例数)){
返回ImmutableValidationResult.error(“不是数字:“+负载”);
}
编号=(编号)有效载荷;
if(number.intValue()>max){
返回ImmutableValidationResult.error(“太大:+number”);
}
if(number.intValue()
然后必须从以下内容创建一个实例作为SpringBean:
<spring:beans>
<spring:bean id="MyValidator" class="de.codecentric.CustomValidator">
<spring:property name="min" value="10" />
<spring:property name="max" value="20" />
</spring:bean>
</spring:beans>
在你的骡流中使用它,如下所示:
<validation:custom-validator doc:name="Validation" ref="MyValidator"/>
Hi,当我尝试实现validato接口时。它的默认实现如下所示:@Override public ValidationResult validate(){return null;}如何访问mule事件?您好,我在该配置中遇到以下错误:发现以元素“validation:custom validator”开头的无效内容。需要“{”,“}”中的一个。所有这些都是为Mule3准备的。你还在用Mule3吗?还是现在的4.3?