css - 在 PrimeFaces 中调整布局单元大小时处理调整大小事件

标签 css jsf layout primefaces resize

我正在处理我的第一个 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;
    }    
}

最佳答案

好吧,我不知道您使用的 PrimeFaces 的女巫版本,但是在 PrimeFaces 手册中找不到属性 resizeListener。您还为您的 bean 命名了 name属性:

@ManagedBean(name = "resize")

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

#{resize.handleResize}

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

要获取调整大小事件,请添加 <p:ajax>在您的 View 中标记如下内容:

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

现在添加 <h:form>标记您的布局,一切都应该有效。

完整 View :

<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>

关于css - 在 PrimeFaces 中调整布局单元大小时处理调整大小事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18733626/

相关文章:

javascript - 在 javascript 中挣扎于 webkit-transition

javascript - 删除按钮仅适用于最后一项

javascript - 在外部单击时关闭选择框

android - Listview - 屏幕底部的页脚

android - TextView 滚动不起作用

php - 将简单列表服务器端/差异存储到本地存储

java - 在数据表过滤器上添加 onkeyup 事件

java - 仅针对特定组件的 ajaxStatus

java - 多次构造 Eager ApplicationScoped 托管 beans

android - 获取布局宽度并在 onGlobalLayoutListener 中设置新的宽度值