У меня возникла проблема с пользовательской аннотацией, которую я некоторое время создавал в своем приложении Micronaut REST. Мне нужна моя аннотация: прочитать значение логического поля в моем классе записи и, если оно истинно, активировать проверку.
Итак, если isCompany установлен значение true, то я хочу сделать так, чтобы аннотированные поля не были нулевыми. Если установлено значение false, эти аннотированные поля могут иметь значение null.
Однако мой текущий код работает, значение «истина» равно жестко запрограммировано, и я не могу найти способ передать значение при отправке POST.
Есть ли способ это сделать?
Пользовательский пакет аннотаций:
package com.app.annotations.messages;
import io.micronaut.context.StaticMessageSource;
import jakarta.inject.Singleton;
@Singleton
public class ValidateCompanyMessages extends StaticMessageSource {
public static final String COMPANY_MESSAGE = "must not be null";
public ValidateCompanyMessages() {
addMessage("com.app.ValidCompany.message", COMPANY_MESSAGE);
}
}
package com.app.annotations.utils;
public final class ValidateCompanyUtil {
private ValidateCompanyUtil() {
}
public static boolean isValid(Boolean isCompany, Object value) {
if (isCompany != null && isCompany) {
if (value == null || value.toString().trim().isEmpty()) {
return false;
}
}
return true;
}
}
package com.app.annotations.validators;
import com.app.annotations.ValidCompany;
import com.app.annotations.utils.ValidateCompanyUtil;
import io.micronaut.context.annotation.Factory;
import io.micronaut.validation.validator.constraints.ConstraintValidator;
import jakarta.inject.Singleton;
@Factory
class ValidateCompanyFactory {
@Singleton
ConstraintValidator companyValidator() {
return (value, annotationMetadata, context) -> ValidateCompanyUtil.isValid(true, value);
}
}
package com.app.annotations;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER,
ElementType.TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(ValidCompany.List.class)
@Constraint(validatedBy = {})
public @interface ValidCompany {
String MESSAGE = "com.app.ValidCompany.message";
String message() default "{" + MESSAGE + "}";
Class[] groups() default {};
Class
Подробнее здесь: https://stackoverflow.com/questions/785 ... ield-value
Пользовательская аннотация на основе другого значения поля ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1716841261
Anonymous
У меня возникла проблема с пользовательской аннотацией, которую я некоторое время создавал в своем приложении Micronaut REST. Мне нужна моя аннотация: прочитать значение логического поля в моем классе записи и, если оно истинно, активировать проверку.
Итак, если isCompany установлен значение true, то я хочу сделать так, чтобы аннотированные поля не были нулевыми. Если установлено значение false, эти аннотированные поля могут иметь значение null.
Однако мой текущий код работает, значение «истина» равно жестко запрограммировано, и я не могу найти способ передать значение при отправке POST.
Есть ли способ это сделать?
Пользовательский пакет аннотаций:
package com.app.annotations.messages;
import io.micronaut.context.StaticMessageSource;
import jakarta.inject.Singleton;
@Singleton
public class ValidateCompanyMessages extends StaticMessageSource {
public static final String COMPANY_MESSAGE = "must not be null";
public ValidateCompanyMessages() {
addMessage("com.app.ValidCompany.message", COMPANY_MESSAGE);
}
}
package com.app.annotations.utils;
public final class ValidateCompanyUtil {
private ValidateCompanyUtil() {
}
public static boolean isValid(Boolean isCompany, Object value) {
if (isCompany != null && isCompany) {
if (value == null || value.toString().trim().isEmpty()) {
return false;
}
}
return true;
}
}
package com.app.annotations.validators;
import com.app.annotations.ValidCompany;
import com.app.annotations.utils.ValidateCompanyUtil;
import io.micronaut.context.annotation.Factory;
import io.micronaut.validation.validator.constraints.ConstraintValidator;
import jakarta.inject.Singleton;
@Factory
class ValidateCompanyFactory {
@Singleton
ConstraintValidator companyValidator() {
return (value, annotationMetadata, context) -> ValidateCompanyUtil.isValid(true, value);
}
}
package com.app.annotations;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER,
ElementType.TYPE_USE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(ValidCompany.List.class)
@Constraint(validatedBy = {})
public @interface ValidCompany {
String MESSAGE = "com.app.ValidCompany.message";
String message() default "{" + MESSAGE + "}";
Class[] groups() default {};
Class
Подробнее здесь: [url]https://stackoverflow.com/questions/78537906/custom-annotation-based-on-another-field-value[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия