Primefaces6.0のモーダル(ダイアログボックス)に問題があります。私は複数の選択モードで簡単なdatatableを持っています。 Datatableには入力テキストコンポーネントもあり、rowselectイベントでは、行に関する詳細情報を表示するダイアログボックスが表示されます。ここで問題となるのは、データテーブル行を最初にクリックするとダイアログボックスが表示されます(つまり、動作するはずです)。ダイアログを閉じて、それぞれの入力テキストコンポーネントの入力を開始し、スペースバーを押すと、ダイアログボックスが表示されます(これは実際のバグです)。 この問題はPrimefaces6.0にのみ存在し、Primefaces5.3リリースでは同じコードが正常に動作しています。 Primefaces6.0では、データテーブルやその他のコンポーネントの応答/サイズ変更が可能なので、私はそれに固執する必要があり、他のコンポーネントと一緒に行くことはできません。私の問題を解決するのを手伝ってください。Primefaces6.0のデータテーブルでスペースバーがヒットしたときのダイアログボックスが表示されます。
コードサンプルは以下の通りです: -
いるindex.xhtml
<p:dataTable id="dtEmployee" value="#{mbEmployee.lstEmployee}" var="emp" selection="#{mbEmployee.lstSelectedEmp}" rowKey="#{emp.regNo}">
<p:ajax event="rowSelect" update=":frmEmployee:diShow" oncomplete="PF('dgInfo').show();"/>
<p:column headerText="Employee No">
<h:outputText id="lblReNo" value="#{emp.regNo}"/>
</p:column>
<p:column headerText="Employee Name">
<h:outputText id="lblEmpName" value="#{emp.employeeName}"/>
</p:column>
<p:column headerText="Employee City">
<h:outputText id="lblCity" value="#{emp.city}"/>
</p:column>
<p:column headerText="Feedback">
<p:inputText id="txtFeedback" value="#{mbEmployee.feedback}"/>
</p:column>
<p:column headerText="Select" selectionMode="multiple" style="text-align: center"/>
</p:dataTable>
<p:dialog id="diShow" modal="true" widgetVar="dgInfo" closable="true">
<p:panelGrid columns="2">
<p:outputLabel id="DispRegNo" value="Reg No"/>
<p:outputLabel id="lblDispRegNo" value="#{mbEmployee.lstSelectedEmp[0].regNo} "/>
<p:outputLabel id="DispName" value="Employee Name"/>
<p:outputLabel id="lblDispName" value="#{mbEmployee.lstSelectedEmp[0].employeeName}"/>
<p:outputLabel id="DispCity" value="City"/>
<p:outputLabel id="lblDispCity" value="#{mbEmployee.lstSelectedEmp[0].city}"/>
</p:panelGrid>
</p:dialog>
Javaクラス:
@ManagedBean(name = "mbEmployee", eager = true)
public class employee {
private List<employeeBean> lstEmployee;
private List<employeeBean> lstSelectedEmp;
private String feedback;
public String getFeedback() {
return feedback;
}
public void setFeedback(String feedback) {
this.feedback = feedback;
}
public List<employeeBean> getLstEmployee() {
return lstEmployee;
}
public void setLstEmployee(List<employeeBean> lstEmployee) {
this.lstEmployee = lstEmployee;
}
public List<employeeBean> getLstSelectedEmp() {
return lstSelectedEmp;
}
public void setLstSelectedEmp(List<employeeBean> lstSelectedEmp) {
this.lstSelectedEmp = lstSelectedEmp;
}
public employee() {
lstEmployee = new ArrayList<>();
lstEmployee.add(new employeeBean("ABC", "XYZ", 45, 1001));
lstEmployee.add(new employeeBean("DEF", "XYZ", 45, 1002));
lstEmployee.add(new employeeBean("GHI", "XYZ", 45, 1003));
lstEmployee.add(new employeeBean("JKL", "XYZ", 45, 1004));
lstEmployee.add(new employeeBean("MNO", "XYZ", 45, 1005));
}
}
Beanクラス:
public class employeeBean {
private String employeeName, city, feedback;
private int age, regNo;
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getFeedback() {
return feedback;
}
public void setFeedback(String feedback) {
this.feedback = feedback;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getRegNo() {
return regNo;
}
public void setRegNo(int regNo) {
this.regNo = regNo;
}
public employeeBean(String employeeName, String city, String feedback, int age, int regNo) {
this.employeeName = employeeName;
this.city = city;
this.feedback = feedback;
this.age = age;
this.regNo = regNo;
}
public employeeBean(String employeeName, String city, int age, int regNo) {
this.employeeName = employeeName;
this.city = city;
this.age = age;
this.regNo = regNo;
}
}
があれば私に知らせてくださいコードにエラーがありますこの問題を解決するためのあらゆるハックがあります。
どこから問題を開くことができるのですか?それにリンクを追加するには気をつけますか? – Kukeltje
ありがとう@Gonza。これは私の問題を解決するのに役立ちました。 – Antoniomonteno