Apache Struts 7.0: невозможно вызвать «org.apache.struts2.validator.ValidatorFactory.lookupRegisteredValidatorType(StrinJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Apache Struts 7.0: невозможно вызвать «org.apache.struts2.validator.ValidatorFactory.lookupRegisteredValidatorType(Strin

Сообщение 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:
....








Подробнее здесь: https://stackoverflow.com/questions/793 ... torfactory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»