#java #jsf
#java #jsf
Вопрос:
Я пытаюсь изучить JSF, выполняя демонстрационный проект. Когда я пытаюсь добавить validator к некоторым компонентам, я получаю java.lang.Исключение ClassNotFoundException: com.test.validator.TestValidator
Мой faces-config выглядит следующим образом
<validator>
<validator-id>Validator</validator-id>
<validator-class>com.test.validator.TestValidator</validator-class>
</validator>
Класс Validator
public class TestValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent componentToValidate,
Object value) throws ValidatorException {
//Add code
}
}
и, наконец, facelet
<f:validator validatorId="Validator"></f:validator>
Я не уверен, что я чего-то не хватает. Мы ценим любую помощь. Спасибо
Комментарии:
1. есть ли у вас объявление пакета в классе validator?
2. Я добавил объявление пакета в класс validator.
Ответ №1:
Я могу придумать несколько возможных причин:
-
У класса TestValidator отсутствует
package
объявление, поэтому вы фактически объявили его в пакете по умолчанию … как отметил @Jigar Joshi. -
Вы его не скомпилировали.
-
Вы не создали / обновили JAR, содержащий класс.
-
Вы не включили JAR в WAR / EAR.
-
В WAR / EAR (или веб-сервере) отсутствует файл JAR, содержащий некоторый класс, от которого зависит ваш TestValidator. (Кажется маловероятным …)
-
Вы не перераспределили WAR / EAR.
Комментарии:
1. Я использую Eclipse helios и Glass fish в качестве веб-сервера, поэтому я думаю, что большинство проблем, указанных выше, будут решены автоматически. Можете ли вы указать мне какие-либо недостающие шаги. Я уверен, что объявление пакета есть, и класс скомпилирован.
2. Найдите в развернутом веб-приложении файл JAR, содержащий этот класс, и убедитесь, что класс находится в файле JAR и что его путь в файле JAR правильный.
3. Большое спасибо Стивену за подробный ответ и последующую помощь. Теперь это работает.