Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
p:ajax监听器不';我不在工作_Ajax_Jsf_Jsf 2_Primefaces - Fatal编程技术网

p:ajax监听器不';我不在工作

p:ajax监听器不';我不在工作,ajax,jsf,jsf-2,primefaces,Ajax,Jsf,Jsf 2,Primefaces,我想拖动项目并将其放到仪表板中。我可以使用outputLabel组件,它是可拖动的,但我不能将其放入仪表板。在仪表板的可拖放标记中,p:ajax侦听器元素不起作用。我怎样才能修好它?还是我的错在哪里?有人能帮我吗 这是我的bean函数: public void f_onCompDrop(DragDropEvent ddEvent) { FacesContext fc = FacesContext.getCurrentInstance(); Application

我想拖动项目并将其放到仪表板中。我可以使用outputLabel组件,它是可拖动的,但我不能将其放入仪表板。在仪表板的可拖放标记中,p:ajax侦听器元素不起作用。我怎样才能修好它?还是我的错在哪里?有人能帮我吗

这是我的bean函数:

public void f_onCompDrop(DragDropEvent ddEvent) {
        FacesContext fc = FacesContext.getCurrentInstance();
        Application application = fc.getApplication();
        dashboard = (Dashboard) application.createComponent(fc, "org.primefaces.component.Dashboard",
                "org.primefaces.component.DashboardRenderer");
        UIComponent comp = ddEvent.getComponent().findComponent(ddEvent.getDragId()); 
        dashboard.setId(ddEvent.getDropId());
        getDashboardComponents();
        DashboardModel model = new DefaultDashboardModel();
        for (int i = 0; i < 3; i++) {
            DashboardColumn column = new DefaultDashboardColumn();
            model.addColumn(column);

        }
        dashboard.setModel(model); 
        if (comp.getId().startsWith("out", 0)) { 
            OutputTextBean out = new OutputTextBean();
            OutputLabel outputLbl = new OutputLabel();
            outputLbl.setId("out_" + out.getID());
            outputLbl.setValue("Dragged");
            model.getColumn(0).addWidget(outputLbl.getId());
        }

        components.add(comp);
    }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <f:view contentType="text/html">
        <h:head>
            <style type="text/css">
                .ui-widget {
                    font-size: 75%;
                }
                .ui-layout-west {
                    z-index:20 !important;
                    overflow:visible;
                }
                .ui-layout-west .ui-layout-unit-content {
                    overflow:visible;
                }
            </style>
        </h:head>

        <h:body>
            <p:layout fullPage="true">

                <p:layoutUnit id="top" position="north" header="menu" size="100">
                </p:layoutUnit>

                <p:layoutUnit id="bottom" position="south" header="properties" size="100">
                </p:layoutUnit>

                <p:layoutUnit id="left" position="west" header="toolbox" size="200" >
                    <p:outputLabel id="out_1" value="outputlabel"/>
                    <p:draggable for="out_1" helper="clone"/>
                </p:layoutUnit>

                <p:layoutUnit id="middle" position="center" >
                    <p:tabView>
                        <p:tab title="Page 1">
                            <p:dashboard id="dashboard" binding="#{myBean.dashboard}" style="width: 600px; height: 600px;">
                            </p:dashboard>

                            <p:droppable for="dashboard" >
                                <p:ajax listener="#{myBean.f_onCompDrop}" update="dashboard"/>
                            </p:droppable>
                        </p:tab>
                    </p:tabView>
                </p:layoutUnit>

            </p:layout>
        </h:body>
    </f:view>
</html>
public void f_onCompDrop(DragDropEvent ddEvent){
FacesContext fc=FacesContext.getCurrentInstance();
Application Application=fc.getApplication();
dashboard=(dashboard)application.createComponent(fc,“org.primefaces.component.dashboard”,
“org.primefaces.component.DashboardRenderer”);
UIComponent comp=ddEvent.getComponent().findComponent(ddEvent.getDragId());
dashboard.setId(ddEvent.getDropId());
getDashboardComponents();
DashboardModel=新的DefaultDashboardModel();
对于(int i=0;i<3;i++){
DashboardColumn=新的DefaultDashboardColumn();
model.addColumn(column);
}
dashboard.setModel(model);
如果(comp.getId().startsWith(“out”,0)){
OutputExtBean out=新的OutputExtBean();
OutputLabel outputLbl=新的OutputLabel();
outputLbl.setId(“out_u3;”+out.getID());
outputLbl.setValue(“拖动”);
model.getColumn(0).addWidget(outputLbl.getId());
}
添加组件(comp);
}
这是我的xhtml文件:

public void f_onCompDrop(DragDropEvent ddEvent) {
        FacesContext fc = FacesContext.getCurrentInstance();
        Application application = fc.getApplication();
        dashboard = (Dashboard) application.createComponent(fc, "org.primefaces.component.Dashboard",
                "org.primefaces.component.DashboardRenderer");
        UIComponent comp = ddEvent.getComponent().findComponent(ddEvent.getDragId()); 
        dashboard.setId(ddEvent.getDropId());
        getDashboardComponents();
        DashboardModel model = new DefaultDashboardModel();
        for (int i = 0; i < 3; i++) {
            DashboardColumn column = new DefaultDashboardColumn();
            model.addColumn(column);

        }
        dashboard.setModel(model); 
        if (comp.getId().startsWith("out", 0)) { 
            OutputTextBean out = new OutputTextBean();
            OutputLabel outputLbl = new OutputLabel();
            outputLbl.setId("out_" + out.getID());
            outputLbl.setValue("Dragged");
            model.getColumn(0).addWidget(outputLbl.getId());
        }

        components.add(comp);
    }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <f:view contentType="text/html">
        <h:head>
            <style type="text/css">
                .ui-widget {
                    font-size: 75%;
                }
                .ui-layout-west {
                    z-index:20 !important;
                    overflow:visible;
                }
                .ui-layout-west .ui-layout-unit-content {
                    overflow:visible;
                }
            </style>
        </h:head>

        <h:body>
            <p:layout fullPage="true">

                <p:layoutUnit id="top" position="north" header="menu" size="100">
                </p:layoutUnit>

                <p:layoutUnit id="bottom" position="south" header="properties" size="100">
                </p:layoutUnit>

                <p:layoutUnit id="left" position="west" header="toolbox" size="200" >
                    <p:outputLabel id="out_1" value="outputlabel"/>
                    <p:draggable for="out_1" helper="clone"/>
                </p:layoutUnit>

                <p:layoutUnit id="middle" position="center" >
                    <p:tabView>
                        <p:tab title="Page 1">
                            <p:dashboard id="dashboard" binding="#{myBean.dashboard}" style="width: 600px; height: 600px;">
                            </p:dashboard>

                            <p:droppable for="dashboard" >
                                <p:ajax listener="#{myBean.f_onCompDrop}" update="dashboard"/>
                            </p:droppable>
                        </p:tab>
                    </p:tabView>
                </p:layoutUnit>

            </p:layout>
        </h:body>
    </f:view>
</html>

.ui小部件{
字体大小:75%;
}
.ui布局西{
z指数:20!重要;
溢出:可见;
}
.ui布局西部.ui布局单元内容{
溢出:可见;
}

错误在于您忘记了表单。在正文的开始标记之后添加
,在正文的结束标记之前添加

p:ajax应该在表单中。