Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 使radio datatable primefaces适应我的案例jsf2_Jsf 2_Datatable_Primefaces_Radio Button - Fatal编程技术网

Jsf 2 使radio datatable primefaces适应我的案例jsf2

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

我想使用此无线电数据表:

但我想在不点击查看按钮的情况下触发对话框

这是我的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.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、 您不需要复选框,如果您只需要选择和对话框显示,只需使用基于纯
的选择即可。它是有效的,我在这里评论之前已经测试过了。