Это может иметь две причины:
Сервлет ресурсов Primefaces не настроен должным образом, что приведет к тому, что необходимые сценарии JavaScripts не будут загружены.Вы должны увидеть это, проверив консоль ошибок JS в браузере на наличие ошибок JS при фокусировке ввода.В Firefox консоль можно получить, нажав Ctrl + Shift + J .
Сервлет ресурсов будет автоматически загружен в средах Servlet 3.0(Glassfish v3, Tomcat 7, JBoss 6 и т. Д.), Однако в более старых средах его необходимо настроить вручную в web.xml
:
<servlet>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
Подпись метода неверна.Вы должны увидеть его, прочитав журналы сервера и увидев javax.el.MethodNotFoundException
в журналах.Пример кода в вашем вопросе правильный, но в ActionEvent
есть неоднозначность.В пакете java.awt.event
есть класс с тем же именем.Вы могли случайно (автоматически) импортировать его.Убедитесь, что это действительно javax.faces.event.ActionEvent
, а не что-то еще.
Если ничего не помогает, вы можете рассмотреть возможность замены PrimeFaces p:ajax
на стандартную JSF 2.0 f:ajax
:
<f:ajax event="focus" listener="#{installationController.startCopyingWarFile}" />
с
public void startCopyingWarFile(AjaxBehaviorEvent event) {
// ...
}
, где AjaxBehaviorEvent
равно javax.faces.event.AjaxBehaviorEvent
.