0

我正在开发我的第一个 Web 项目并为此使用 PrimeFaces 组件套件。

当我调整中心布局单元的大小时,我想触发一个调整大小事件。我已经尝试过代码,但是 bean 类中的方法永远不会被调用。

我在这里做错了什么?如果我错了,请纠正我?

    <p:layout fullPage="true" resizeListner="#{resizeBean.handleResize}">
        <p:layoutUnit id="top" position="north" resizable="true" size="20%">
            <ui:insert name="header">
                <ui:include src="Header.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="bottom" styleClass="class-bottom" position="south"
            resizable="true" size="25%">
            <ui:insert name="footer">
                <ui:include src="Footer.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="left" styleClass="class-left" position="west"
            resizable="true" size="24%">
            <ui:insert name="tree">
                <ui:include src="Tree.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="addDlg" position="center">
            <ui:insert>
                <ui:include src="AddDevice.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="center" position="center">
            <ui:insert name="centerPage">
                <ui:include src="Center.xhtml" />
            </ui:insert>
        </p:layoutUnit>
    </p:layout>    

这是bean类的代码

@ManagedBean(name = "resize")    
public class ResizeBean implements Serializable {    
        private long width;    
        private long height;    
public void handleResize(ResizeEvent event) {    
width = event.getWidth();    
height = event.getWidth();    
System.out.println("in resize");
    }    
    public long getWidth() {
        return this.width;
    }

    public long getHeight() {
        return this.height;
    }    
}
4

1 回答 1

1

好吧,我不知道您正在使用的 PrimeFaces 女巫版本,但是在 de PrimeFaces 手册中找不到属性 resizeListener。您还为您的 bean 提供了一个具有以下name属性的名称:

@ManagedBean(name = "resize")

因此,如果您想在视图中使用它,请像这样引用您的名字:

#{resize.handleResize}

如果不使用 name 属性,则可以参考 resizeBean。更多信息可以在这里找到:http: //docs.oracle.com/javaee/6/api/javax/faces/bean/ManagedBean.html

要获得调整大小事件<p:ajax>,请在您的视图中添加一个标签,如下所示:

<p:ajax event="resize" listener="#{resize.handleResize}" />

现在<h:form>在您的布局周围添加标签,一切都应该工作。

完整视图:

<h:form>
    <p:layout fullPage="true">
        <p:ajax event="resize" listener="#{resize.handleResize}" />
        <p:layoutUnit id="top" position="north" resizable="true" size="20%">
            <ui:insert name="header">
                <ui:include src="Header.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="bottom" styleClass="class-bottom" position="south"
            resizable="true" size="25%">
            <ui:insert name="footer">
                <ui:include src="Footer.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="left" styleClass="class-left" position="west"
            resizable="true" size="24%">
            <ui:insert name="tree">
                <ui:include src="Tree.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="addDlg" position="center">
            <ui:insert>
                <ui:include src="AddDevice.xhtml" />
            </ui:insert>
        </p:layoutUnit>

        <p:layoutUnit id="center" position="center">
            <ui:insert name="centerPage">
                <ui:include src="Center.xhtml" />
            </ui:insert>
        </p:layoutUnit>
    </p:layout>    
<h:/form>
于 2013-09-11T10:01:49.807 回答