隐藏一个数据列,而无需重新启动.JSF客户端操纵



我用来使用与jQuery和html混合的Spring MVC开发丰富的客户端接口应用程序;但是,由于我们目前没有一个好的设计师,所以我认为使用PrimeFaces 5.2与JSF 2.2一起使用,这应该为我提供没有常规设计师的专业界面。

我对如何将JSF用作基于组件的框架有很好的了解,但是我担心的是,我想尽可能避免对服务器的不必要呼叫,因为我每天都有成千上万的请求。因此,我坚持使用JSF使用jQuery,并且会尽可能避免使用AJAX调用以更新视图,除非我需要根据某些用户选择对其进行完全重组。

这是我尝试的情况:我有一个表,用户可以根据每列的复选框选择来选择以隐藏/显示列。现在,正如我说的那样

我制作了初稿并尝试与JQuery一起使用时,我发现我很努力地使用Firebug并构建复杂的jQuery来隐藏P:DataTable列。

那是正常的吗?我的意思是,当我查看代码并查看它取决于PrimeFaces HTML结构的生成多少时,我感到不自信。

我是不明智地使用JSF还是JSF的真相?

您可以在JSF视图上使用您想要的所有jQuery/js。主要问题是,只要您不同步状态,模型就不会保持更新。要查看隐藏/显示列不是那么复杂,在这里,您使用jQuery及其样式选择器有一个基本的完整示例:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head />
<h:body>
    <script>
        function switchColumn() {
            if ($('.style1').is(":visible")) {
                $('.style1').fadeOut(1000);
            } else {
                $('.style1').fadeIn(1000);
            }
        }
    </script>
    <h:form>
        <p:commandButton type="button" onclick="switchColumn();"
            value="Switch" />
        <p:dataTable var="test" value="#{testBean.values}">
            <p:column styleClass="style1">
                #{test.id}
            </p:column>
            <p:column>
                #{test.val1}
            </p:column>
        </p:dataTable>
    </h:form>
</h:body>
</html>
@ManagedBean
@ViewScoped
public class TestBean {
    private List<TestClass> values = new ArrayList<TestClass>();
    public TestBean() {
        values.addAll(Arrays.asList(new TestClass(1, "val1"), new TestClass(2,
                "val2")));
    }
    public List<TestClass> getValues() {
        return values;
    }
    public class TestClass {
        private Integer id;
        private String val1;
        public TestClass(Integer id, String val1) {
            this.id = id;
            this.val1 = val1;
        }
        public Integer getId() {
            return id;
        }
        public String getVal1() {
            return val1;
        }
    }
}

必须说,JSF旨在控制您的请求内容和模型更新。在这些术语中,不如SpringMVC那么光,因为您无法选择要发送的内容(不是完全)。因此,如果担心请求/响应表演,也许您应该使用其他框架。

另请参阅:

  • 是否可以在不重新读取整个表的情况下添加列数据

最新更新