Использование PF 5.1, JSF 2.2.7 на Glassfish 4.1.SelectOneMenu сбрасывает события и срабатывает пожар на ALT-прессе
У меня есть этот простой пример с selectOneMenu
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form>
<p:selectOneMenu value="#{testBean.text}">
<p:ajax listener="#{testBean.test()}" update="outputpanel"/>
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
</p:selectOneMenu>
<p:outputPanel id="outputpanel">
#{testBean.text}
</p:outputPanel>
</h:form>
</h:body>
</html>
Bean:
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@Named
@ViewScoped
public class TestBean implements Serializable
{
private String text;
public String getText() {
return text;
}
public void setText(String text) {
System.out.println("settext: " + text);
this.text = text;
}
public void test() {
System.out.println("test called");
}
}
Он работает, как и следовало ожидать, за исключением того, что если выпадающий имеет фокус и я нажимаю ALT на окнах или CMD на mac он вызовет слушателя, а также сбросит выпадающий список. Это происходит, когда выпадающее меню не имеет значения по умолчанию (когда оно уже включено 2 или 3). И это означает, что я не могу, например, нажать ALT + TAB, чтобы проверить что-то в другой открытой программе - когда я вернусь, он будет сброшен.
Почему это злобное поведение и как его избежать? Я бы предпочел не нажимать на ALT, чтобы запустить event="change"
и сбросить компонент.
Большое спасибо BalusC. Хорошая работа. –
Добро пожаловать. – BalusC
@BalusC: Благодарим вас за отличную поддержку, мы исправили эту проблему в файлах 5.1 и 5.2 как ваше предложение. Теперь мы обновили до primfaces 6.0, и теперь у нас возникает такая же проблема. в 6.0 они использовали keydown. Я попробовал ваше решение, но не повезло. Пожалуйста, помогите мне. – Srikanth