У меня есть работающая контактная форма Apache Struts 6.0, в которой используется специальный валидатор для поля кода безопасности. Пользовательский валидатор перестал работать после обновления Apache Struts 6.0 до 7.0. После отправки формы я столкнулся со следующей ошибкой:
Messages:
Cannot invoke "org.apache.struts2.validator.ValidatorFactory.lookupRegisteredValidatorType(String)" because "this.validatorFactory" is null
File: org/apache/struts2/validator/AnnotationValidationConfigurationBuilder.java
Line number: 620
Среда разработки: Windows 11 Pro, Apache Tomcat 11, Netbeans IDE 21.
Вот файлы в моем проекте:
Файл 1: src/main/java/com/mydomain/struts/actions/ContactAction.java
package com.mydomain.struts.actions;
import org.apache.struts2.ActionSupport;
import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.validator.annotations.CustomValidator;
import org.apache.struts2.validator.annotations.EmailValidator;
import org.apache.struts2.validator.annotations.RequiredStringValidator;
import org.apache.struts2.validator.annotations.StringLengthFieldValidator;
public class ContactAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name, message, email, securityCode;
public String getName() {
return name;
}
@RequiredStringValidator(message = "Name is required.")
@StringLengthFieldValidator(
minLength = "5",
maxLength = "40",
message = "Your name must be from 5 to 40 characters."
)
@StrutsParameter()
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
@RequiredStringValidator(message = "Message is required.")
@StringLengthFieldValidator(
minLength = "10",
maxLength = "255",
message = "The message must be from 10 to 255 characters."
)
@StrutsParameter()
public void setMessage(String message) {
this.message = message;
}
public String getEmail() {
return email;
}
@RequiredStringValidator(message = "Email address is required.")
@EmailValidator(
message = "The email address you entered is not valid."
)
@StrutsParameter()
public void setEmail(String email) {
this.email = email;
}
public String getSecurityCode() {
return securityCode;
}
@RequiredStringValidator(message = "Security code is required.")
@CustomValidator(type = "securitycodevalidator")
@StrutsParameter()
public void setSecurityCode(String securityCode) {
this.securityCode = securityCode;
}
@Override
public String execute() {
return SUCCESS;
}
}
Файл 2: src/main/java/com/mydomain/struts/validator/SecurityCodeValidator.java
package com.mydomain.struts.validator;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ValidationException;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.validator.validators.FieldValidatorSupport;
public class SecurityCodeValidator extends FieldValidatorSupport {
...
@Override
public void validate(Object o) throws ValidationException {
boolean isSecurityCodeCorrect = validateSecurityCode(...);
if (! isSecurityCodeCorrect) {
addFieldError(getFieldName(), o);
}
}
}
Файл 3: src/main/webapp/WEB-INF/classes/validators.xml
Файл 4: src/main/webapp/contact.jsp
Contact Form
Security code:
....
Подробнее здесь: https://stackoverflow.com/questions/793 ... torfactory
Apache Struts 7.0: невозможно вызвать «org.apache.struts2.validator.ValidatorFactory.lookupRegisteredValidatorType(Strin ⇐ JAVA
Программисты JAVA общаются здесь
1736077268
Anonymous
У меня есть работающая контактная форма Apache Struts 6.0, в которой используется специальный валидатор для поля кода безопасности. Пользовательский валидатор перестал работать после обновления Apache Struts 6.0 до 7.0. После отправки формы я столкнулся со следующей ошибкой:
Messages:
Cannot invoke "org.apache.struts2.validator.ValidatorFactory.lookupRegisteredValidatorType(String)" because "this.validatorFactory" is null
File: org/apache/struts2/validator/AnnotationValidationConfigurationBuilder.java
Line number: 620
Среда разработки: Windows 11 Pro, Apache Tomcat 11, Netbeans IDE 21.
Вот файлы в моем проекте:
Файл 1: src/main/java/com/mydomain/struts/actions/ContactAction.java
package com.mydomain.struts.actions;
import org.apache.struts2.ActionSupport;
import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.validator.annotations.CustomValidator;
import org.apache.struts2.validator.annotations.EmailValidator;
import org.apache.struts2.validator.annotations.RequiredStringValidator;
import org.apache.struts2.validator.annotations.StringLengthFieldValidator;
public class ContactAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name, message, email, securityCode;
public String getName() {
return name;
}
@RequiredStringValidator(message = "Name is required.")
@StringLengthFieldValidator(
minLength = "5",
maxLength = "40",
message = "Your name must be from 5 to 40 characters."
)
@StrutsParameter()
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
@RequiredStringValidator(message = "Message is required.")
@StringLengthFieldValidator(
minLength = "10",
maxLength = "255",
message = "The message must be from 10 to 255 characters."
)
@StrutsParameter()
public void setMessage(String message) {
this.message = message;
}
public String getEmail() {
return email;
}
@RequiredStringValidator(message = "Email address is required.")
@EmailValidator(
message = "The email address you entered is not valid."
)
@StrutsParameter()
public void setEmail(String email) {
this.email = email;
}
public String getSecurityCode() {
return securityCode;
}
@RequiredStringValidator(message = "Security code is required.")
@CustomValidator(type = "securitycodevalidator")
@StrutsParameter()
public void setSecurityCode(String securityCode) {
this.securityCode = securityCode;
}
@Override
public String execute() {
return SUCCESS;
}
}
Файл 2: src/main/java/com/mydomain/struts/validator/SecurityCodeValidator.java
package com.mydomain.struts.validator;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ValidationException;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.validator.validators.FieldValidatorSupport;
public class SecurityCodeValidator extends FieldValidatorSupport {
...
@Override
public void validate(Object o) throws ValidationException {
boolean isSecurityCodeCorrect = validateSecurityCode(...);
if (! isSecurityCodeCorrect) {
addFieldError(getFieldName(), o);
}
}
}
Файл 3: src/main/webapp/WEB-INF/classes/validators.xml
Файл 4: src/main/webapp/contact.jsp
Contact Form
Security code:
....
Подробнее здесь: [url]https://stackoverflow.com/questions/79330640/apache-struts-7-0-cannot-invoke-org-apache-struts2-validator-validatorfactory[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия