Jsf 2 使radio datatable primefaces适应我的案例jsf2
我想使用此无线电数据表: 但我想在不点击查看按钮的情况下触发对话框 这是我的xhtml页面:Jsf 2 使radio datatable primefaces适应我的案例jsf2,jsf-2,datatable,primefaces,radio-button,Jsf 2,Datatable,Primefaces,Radio Button,我想使用此无线电数据表: 但我想在不点击查看按钮的情况下触发对话框 这是我的xhtml页面: <?xml version="1.0" encoding="UTF-8"?> <!-- To change this template, choose Tools | Templates and open the template in the editor. --> <!DOCTYPE html> <html xmlns="http://www.w3
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>TODO supply a title</title>
</h:head>
<h:body>
<h:form id="form">
<p:dataTable id="cars" var="car" value="#{newJSFManagedBean.mediumPapiersModel}" paginator="true" rows="10"
selection="#{newJSFManagedBean.selectedPapier}" >
<f:facet name="header">
RadioButton Based Selection
</f:facet>
<p:ajax event="rowSelect" listener="#{newJSFManagedBean.onRowSelect}"
update=":form:display" oncomplete="carDialog.show()" />
<p:column selectionMode="single" style="width:18px" />
<p:ajax event="rowSelect" listener="#{newJSFManagedBean.onRowSelect}"
update=":form:display" oncomplete="carDialog.show()" />
<p:column headerText="libelle">
#{car.libelle}
</p:column>
<p:column headerText="format">
#{car.format}
</p:column>
<p:column headerText="stock" >
#{car.stock}
</p:column>
</p:dataTable>
<p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false"
showEffect="explode" hideEffect="explode">
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="id" />
<h:outputText value="#{newJSFManagedBean.selectedPapier.id}" />
<h:outputText value="format" />
<h:outputText value="#{newJSFManagedBean.selectedPapier.format}" />
<h:outputText value="grammage" />
<h:outputText value="#{newJSFManagedBean.selectedPapier.grammage}" />
<h:outputText value="libelle" />
<h:outputText value="#{newJSFManagedBean.selectedPapier.libelle}" />
</h:panelGrid>
</p:dialog>
</h:form>
</h:body>
</html>
提供头衔
基于单选按钮的选择
#{car.libelle}
#{car.format}
#{car.stock}
这是我的managedBean:
package controlleurs.admin;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
import pojos_mappingFiles.Papier;
@ManagedBean
@SessionScoped
public class NewJSFManagedBean {
metiers.admin.stockHelper sh;
Papier selectedPapier;
List<Papier> papiers;
papierDataModel mediumPapiersModel;
/**
* Creates a new instance of NewJSFManagedBean
*/
public NewJSFManagedBean() {
sh = new metiers.admin.stockHelper();
papiers = new ArrayList<Papier>();
papiers = sh.getPapiers();
for(Papier pap : papiers ){
pap.setChecked(false);
}
mediumPapiersModel = new papierDataModel(papiers);
}
public Papier getSelectedPapier() {
System.out.println("j ai selectionz ");
return selectedPapier;
}
public void setSelectedPapier(Papier selectedPapier) {
System.out.println("je suis selectionné mon numero : "+selectedPapier.getLibelle());
this.selectedPapier = selectedPapier;
}
public papierDataModel getMediumPapiersModel() {
return mediumPapiersModel;
}
public void onRowSelect(SelectEvent event) {
System.out.println("je suis dans onRowSelect");
}
}
package controllers.admin;
导入java.util.ArrayList;
导入java.util.List;
导入javax.faces.application.FacesMessage;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入javax.faces.context.FacesContext;
导入org.primefaces.event.SelectEvent;
导入pojos_mappingFiles.Papier;
@ManagedBean
@会议范围
公共类NewJSFManagedBean{
metiers.admin.sh;
纸张选择纸张;
列出纸张;
papierDataModel MediumPapierModel;
/**
*创建NewJSFManagedBean的新实例
*/
public NewJSFManagedBean(){
sh=new metiers.admin.stockHelper();
papiers=新阵列列表();
papiers=sh.getPapiers();
用于(纸张pap:纸张){
pap.setChecked(假);
}
MEDIUMPAPIERMODEL=新的纸张数据模型(纸张);
}
公共纸张getSelectedPapier(){
System.out.println(“j ai selectionz”);
返回所选纸张;
}
公共空隙设置选择的纸张(纸张选择的纸张){
System.out.println(“je suis selectionnémon numero:+selectedPapier.getLibelle());
this.selectedPapier=selectedPapier;
}
公共papierDataModel GetMediumPapierModel(){
回归模型;
}
ROWSELECT上的公共无效(SelectEvent事件){
System.out.println(“je suis dans onRowSelect”);
}
}
这是papierDataModel:
package controlleurs.admin;
import java.util.List;
import javax.faces.model.ListDataModel;
import org.primefaces.model.SelectableDataModel;
import pojos_mappingFiles.Papier;
public class papierDataModel extends ListDataModel<Papier> implements SelectableDataModel<Papier> {
public papierDataModel() {
}
public papierDataModel(List<Papier> data) {
super(data);
}
@Override
public Object getRowKey(Papier t) {
return t.getId().toString();
}
@Override
public Papier getRowData(String rowKey) {
List<Papier> papiers = (List<Papier>) getWrappedData();
for(Papier car : papiers) {
if(car.getId().toString().equals(rowKey))
return car;
}
return null;
}
}
package controllers.admin;
导入java.util.List;
导入javax.faces.model.ListDataModel;
导入org.primefaces.model.SelectableDataModel;
导入pojos_mappingFiles.Papier;
公共类papierDataModel扩展ListDataModel实现SelectableDataModel{
公共papierDataModel(){
}
公共纸张数据模型(列表数据){
超级(数据);
}
@凌驾
公共对象getRowKey(纸页t){
返回t.getId().toString();
}
@凌驾
公共纸张getRowData(字符串rowKey){
列表纸张=(列表)getWrappedData();
用于(纸制汽车:纸制){
if(car.getId().toString().equals(rowKey))
返回车;
}
返回null;
}
}
但是当我检查其中一行时,对话框没有出现,我不知道原因,您知道吗,谢谢尝试放置
您确定需要SelectEvent
参数在public void onRowSelect(SelectEvent)
方法上吗?看看这个例子,bean上的侦听器方法是空的。完全没有参数。我删除了selectEvent参数并添加了appendtobody属性,但同样没有结果您需要使用浏览器的开发者/javascript控制台在javascript模式下调试此属性。在浏览器中启用此选项,然后查看错误控制台正在打印什么。您可能还希望检查控制台的“网络”选项卡,以确保rowSelect事件确实正在触发。为了安全起见,请删除奇特的jquery效果,包括rowKey属性。p、 您不需要复选框,如果您只需要选择和对话框显示,只需使用基于纯
的选择即可。它是有效的,我在这里评论之前已经测试过了。