- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的类(class)。
@DateRange.List({
@DateRange(start = "startDate", end = "endDate", message = "Start date should be earlier than end date.")
})
public class MyClass {
@NotNull
@Pattern(regexp = DateConstants.DATE_FORMAT_REGEX, message = "Invalid date format.")
public String startDate;
@NotNull
@Pattern(regexp = DateConstants.DATE_FORMAT_REGEX, message = "Invalid date format.")
public String endDate;
}
我添加了一个@DateRange
注释,其声明如下。
@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = DateRangeValidator.class)
@Documented
public @interface DateRange {
String message() default "{constraints.daterange}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String start();
String end();
@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
@interface List {
DateRange[] value();
}
}
validator 类是
public class DateRangeValidator implements ConstraintValidator<DateRange, Object> {
private String startDateFieldName;
private String endDateFieldName;
@Override
public void initialize(final DateRange constraintAnnotation) {
startDateFieldName = constraintAnnotation.start();
endDateFieldName = constraintAnnotation.end();
}
@Override
public boolean isValid(final Object value, final ConstraintValidatorContext context) {
final String startDate = (String) BeanUtils.getProperty(value, startDateFieldName);
final String endDate = (String) BeanUtils.getProperty(value, endDateFieldName);
return isValidDateRange(startDate, endDate);
}
private boolean isValidDateRange(String start, String end) {
DateFormat dateFormat = new SimpleDateFormat(DateConstants.DATE_FORMAT);
try {
Date startDate = dateFormat.parse(start);
Date endDate = dateFormat.parse(end);
if (startDate.before(endDate)) return true;
} catch (ParseException e) {}
return false;
}
}
validator 检查开始日期是否早于结束日期。
执行此操作时,BeanUtils.getProperty()
抛出 java.lang.NoSuchMethodException
以及未知属性“startDate”
。
java.lang.NoSuchMethodException: Unknown property 'startDate' on class 'class mypackage.domain.rest.MyClass'
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1322)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
at org.apache.commons.beanutils.BeanUtilsBean.getNestedProperty(BeanUtilsBean.java:715)
at org.apache.commons.beanutils.BeanUtilsBean.getProperty(BeanUtilsBean.java:741)
at org.apache.commons.beanutils.BeanUtils.getProperty(BeanUtils.java:382)
at bd.com.ipay.offer.validation.imp.DateRangeValidator.isValid(DateRangeValidator.java:36)
at org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:278)
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:153)
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:117)
at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:84)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:452)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:397)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:361)
at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:313)
at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:139)
at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108)
at org.springframework.validation.DataBinder.validate(DataBinder.java:866)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.validateIfApplicable(AbstractMessageConverterMethodArgumentResolver.java:268)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:99)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
但是 startDate
位于 MyClass
中。该变量是公共(public)变量,并命名为驼峰式命名法。为什么会出现这个问题?任何想法?
最佳答案
我找到了解决方案。我只需要写我的 MyClass
的 setter/getter 。似乎没有找到该属性,因为没有 getter 函数。
最后的MyClass
好像。
@DateRange.List({
@DateRange(start = "startDate", end = "endDate", message = "Start date should be earlier than end date.")
})
public class MyClass {
@NotNull
@Pattern(regexp = DateConstants.DATE_FORMAT_REGEX, message = "Invalid date format.")
public String startDate;
@NotNull
@Pattern(regexp = DateConstants.DATE_FORMAT_REGEX, message = "Invalid date format.")
public String endDate;
public String getStartDate() {
return startDate;
}
public String getEndDate() {
return endDate;
}
}
关于java - 使用 BeanUtils.getProperty() 时出现未知属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820182/
我正在查看 MSDN 作者在同一类的不同方法中使用以下代码的一些代码: if ( TypeDescriptor.GetProperties(ModelInstance)[propertyName] !
考虑以下代码。 Object obj; PropertyDescriptorCollection A = TypeDescriptor.GetProperties(obj); PropertyInfo
我有一种方法。在Java 8中,它在我的Macbook Pro M2上运行得很好。。结果是:。现在在迁移到Java 17之后,我得到了。我预计这两个版本的行为是相同的。我遗漏了什么?。我原以为这个方法
我有一种方法。在Java 8中,它在我的Macbook Pro M2上运行得很好。。结果是:。现在在迁移到Java 17之后,我得到了。我预计这两个版本的行为是相同的。我遗漏了什么?。我原以为这个方法
I have this method我有一种方法 static String getArchSuffix() { String arch = System.getProperty(&qu
System.getProperty("os.name") and System.getProperty("os.version") returning windows 10, 10.0, in wi
System.getProperty("os.name") and System.getProperty("os.version") returning windows 10, 10.0, in wi
我创建了包含用户列表的java类(称为“usersList”并包含每个值的用户名和密码), 现在我创建一个 JSP 文件并指定 JavaBeans 的范围: 我想将 usersList 获取到一
public object GetObjectToSerialize(object value, Type targetType) { var allProperties = value.
本文实例汇总了Java的System.getProperty()方法获取信息的用法。分享给大家供大家参考。具体如下: 复制代码代码如下: System.out.prin
我试图遍历类中的每个属性,输出属性的名称和值。但是我的代码没有返回任何属性。 正在循环的类: public class GameOptions { public ushort Fps;
我正在尝试编写一个通用实用程序,以便从 .NET 外部通过 COM 使用(/skip long story)。无论如何,我正在尝试向 ExpandoObject 添加属性,并且需要将 Property
我正在尝试使用 gradle 版本 4.8+ 的 Java、Serenity-BDD 项目,但应用程序没有提取 -Denvironment 和 -Dservicebranches 的 CLI 参数。我
我有一个源模块: import _ from 'underscore' import {Observable} from 'rxjs' export default function (rxfb) {
当我调用方法 System.getProperties(); 并打印它们时,它给出一个包含键值对的大列表,无需设置属性。 Java 从哪里获取那些属性来自? 最佳答案 来自托管 Java 的操作系统(
在这行代码中,我使用 getProperty 方法: PrintWriter writer = new PrintWriter("~/4413/ctrl/geo.txt".replaceFirst("
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
在一个非常庞大的代码库中,我发现了以下代码片段 System.getProperty("some stuff")。我尝试在一些 .properties 文件中查找该属性,但找不到它。你们有什么想法可以
让我大吃一惊! 根据 groovy 的文档,groovy 可以使用“getProperty”方法来获取对象的属性。所以当我想改变获取特殊对象属性的行为时,我使用一个类别类来覆盖“getProperty
这个问题可能会说明我缺乏关于 Groovy 类如何工作的知识,但我试图自己解决这个问题,但没有运气。我想在一个类上创建一个 getProperty() 方法,这样我就可以以 Groovyish 的方式
我是一名优秀的程序员,十分优秀!