Primefaces UI使用小结

Primefaces UI使用小结

28 Jun 2013/in 开放平台开发网站设计和开发 /by Himaweb

相较于Struts、SpringMVC等MVC框架,在国内的企业应用中JSF的使用确不多,或许是由于资料不多又或许是咱们对它的认知不够,但有一点不能否认,JSF是被归入Java EE 5规范的,而其它的却没有。以前使用JSF作过几个项目,但这是第一次使用Primefaces UI(它是基于JSF Mojarra实现的一套很强大的UI,有社区版和商业版),由于在使用过程当中碰到不少“坎”,因此想写篇博客将碰到的问题总结下,也但愿能帮助到想使用或正在使用Primefaces UI的人。ajax

        Primefaces UI在百度上基本搜不到有价值的信息,在整个解决问题的过程当中Google(记着要切换到英文去搜哦)帮了很大的忙,它在国内用的人就更少了。但回过头去看,我真的很愿意向你们推荐这款UI,超级赞!我目前使用的版本是Primefaces 3.5和JSF Mojarra-2.1.17,废话少说进入正题。app

1、ManagedBean的Scoped框架

        一、RequestScopedwebapp

        二、ViewScoped异步

        三、SessionScoped布局

        四、ApplicationScoped网站

        Request、Session、Application你们都比较熟悉,就很少说了,ViewScoped顾名思义视图有效,或者说当前页有效,由于Servlet规范里并无View这个概念,因此它是JSF延伸出的一个概念,我的理解是为Ajax准备的,你们必定要记住它哦,后续它可发挥了很大的做用。ui

2、Primefacesspa

       一、template的使用

       在如今Web开发中,特别是Ajax出现后,framesetframeiframe已经不是特别推荐使用了(固然也可使用),牛人能够用DIV构建出任何想要的布局,像咱们这些平民懂的分享牛人的成果就OK了,在Primefaces里咱们能够用p:layout布局,并作成template,后面的每一个页面只要继承这个template,就能够直接享用,以下图

        二、ViewScoped的使用

        这个很重要,在项目开始时,由于SessionScoped的生命周期太长了不想用,因此大部分的ManagedBean都是用的RequestScoped,问题是一个接一个,如p:commandButton和p:commandLink的action和actionListener莫名其妙的不可进入,Ajax的使用也有时能够有时不能够,Scoped换成Session就一切都OK了,发现跟Bean的生命周期有关系,最后调试完,发现用ViewScoped最合适,生命周期比Request长比Session短,同时又能解决上述问题,由于Primefaces UI里大量用到ajax通讯,这种场景最适合用ViewScoped。

        三、form的使用

        在使用中必定要避免form嵌套form的状况,它会出现不少不能够预知的状况,如提交附件会出现问题,但并列form能够放心的使用

        四、tree的使用

        如上图的Left中能够放置一个树形菜单,使用过的人可能会和我碰到同样的问题,那就是当我打开一个新页面时,树形菜单不能保持我打开页面以前的状态,解决方法:负责树形菜单Node节点的Bean的Scoped要申明成SessionScoped,并在tree标签上加属性dynamic=”true”,如<p:tree value=”#{menuBean.root}” var=”doc” dynamic=”true”>

        五、confirmDialog的使用

        若是在使用confirmDialog时发现,弹出框被遮罩层给挡住了不可以使用,怎么办?解决方法:在confirmDialog标签加属性appendToBody=”true”,如<p:confirmDialog widgetVar=”startConfirm” appendToBody=”true” message=”Are you sure about starting the project?” header=”Start project” severity=”alert”>

        六、dialog的使用

        不得不提的一个组件,超级好用,个人应用里大量用到了它,它用起来让你的Web应用就像是一个Client应用,交互性和用户体验很是的好。你能够将dialog看成一个提示框用,也能够在dialog里作一个复杂的表单,你能够选择遮罩也能够不使用,若是要使用遮罩只需加上属性modal=”true”

        七、panelpanelGridoutputPanelaccordionPaneltabView等的使用

        他们都是布局展示相关的,用好来,效果很是的好,固然还有其它的。

        八、process和update属性的使用

        前面说了Primefaces大量用到了Ajax,那就不得不提process和update,他们俩恰好相反,process指出要异步提交哪一部分的内容,update指出要异步更新哪一部分的内容,常常在一块儿配合使用。功能很是的强大,若是有兴之后能够再详细说说。

        九、fileUpload的使用

        在使用前要在Web.xml中加入以下部分:

      <filter>

            <filter-name>PrimeFaces FileUpload Filter</filter-name>

            <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>

      </filter>

      <filter-mapping>

            <filter-name>PrimeFaces FileUpload Filter</filter-name>

            <servlet-name>Faces Servlet</servlet-name>

      </filter-mapping>

        使用p:fileUpload的form必须加上属性enctype=”multipart/form-data”,并且它不支持Ajax异步提交,因此对应的command要加上属性ajax=”false”,如:

      <h:form id=”form-delivery-file” enctype=”multipart/form-data”>

           <p:panelGrid columns=”2″>

               <p:outputLabel value=”Delivery File: ” />

               <p:fileUpload id=”deliveryFile” value=”#{projectBean.deliveryFileFromUi}” mode=”simple” storage=”file” />

           </p:panelGrid>

           <p:commandButton value=”Submit” ajax=”false” style=”margin:0″ actionListener=”#{projectBean.deliveryFile}” />

      </h:form>

        因为时间问题,此次先写到这,还有不少好用的组件,及在深刻使用过程当中碰到的问题和解决方法,后续再道来。想了解的朋友能够先到Primefaces的官方网站一睹为快:http://www.primefaces.org/showcase/ui/home.jsf

相关文章
相关标签/搜索