正确使用primefaces的process和update

process属性作用于服务端,用于指定在表单提交或Ajax请求时,哪些组件需要在JSF的生命周期中被处理。它有以下几个值:

  • @this:表示只处理当前组件。
  • @form:表示处理当前表单内的所有组件。

update属性作用于客户端,用于指定在Ajax请求完成后,HTML DOM树的哪些部分需要被更新以响应表单的提交或组件的变化。它有以下几个值:

  • @this:表示只更新当前组件。
  • @form:表示更新当前表单内的所有组件。
  • 组件ID,表示更新指定ID的HTML元素。

下面讲一个具体的示例。

XML 复制代码
<h:form id="dialogs">
    <p:dialog header="计量单位" showEffect="fade" modal="true" widgetVar="manageUnitDialog"
              closeOnEscape="true"  position="center" styleClass="s-360">               
        <p:outputPanel id="manage-unit-content">
            <p:outputPanel rendered="#{not empty unitBacking.current}">
                <div class="formgrid grid ui-fluid">
                    <div class="col-12 md:col-12 lg:col-12">
                        <div class="field">
                            <p:outputLabel for="name" >单位名称</p:outputLabel>
                            <p:inputText id="name" value="#{unitBacking.current.name}" autocomplete="off"/>
                            <h:message for="name" class="error"/>
                        </div>
                    </div>
                </div>
            </p:outputPanel>
        </p:outputPanel>
        <p:hotkey bind="ctrl+s" update="form:messages" action="#{unitBacking.save()}"/>
        <f:facet name="footer">
            <div class="dialog-header-button-bar">
                <p:commandButton value="保存" icon="pi pi-save" 
                                 actionListener="#{unitBacking.save}" 
                                 process="@form" 
                                 update="dialogs:manage-unit-content"/>
                <p:commandButton value="取消" icon="pi pi-times" onclick="PF('manageUnitDialog').hide()"
                                 styleClass="ui-button-secondary" type="button" />
            </div>
        </f:facet>
    </p:dialog>
    
    
    <p:confirmDialog widgetVar="deleteUnitDialog" showEffect="fade" closeOnEscape="true"
                     message="删除后不可恢复,请谨慎操作......" header="提示" severity="warn">                
        <p:commandButton value="删除" icon="pi pi-trash"
                         actionListener="#{unitBacking.delete(unitBacking.current.id)}"
                         process="@this"
                         oncomplete="PF('deleteUnitDialog').hide()"
                         styleClass="ui-button-danger"/>
        <p:commandButton value="取消" type="button"  icon="pi pi-times"
                         onclick="PF('deleteUnitDialog').hide()" styleClass="ui-button-secondary"/>
    </p:confirmDialog>
</h:form>

actionListener表示仅在当前页面上操作,不跳转页面;若要跳转页面则使用action。

process="@form" 表示处理事个表单,用于在修改数 据、添加数据 等操作。在保存、更新按钮用@form。

update="dialogs:manage-unit-content" 表示与表单验证结合,若没有此选项则表单验证失效。update的值是面板的ID值。

process="@this" 表示后台处理,不需要处理整个表单,通常用于删除某条记录、修改某条记录前加载它。在修改按钮删除按钮用@this。

相关推荐
默默coding的程序猿9 分钟前
3.前端和后端参数不一致,后端接不到数据的解决方案
java·前端·spring·ssm·springboot·idea·springcloud
在未来等你23 分钟前
JVM调优实战 Day 15:云原生环境下的JVM配置
java·jvm·性能优化·虚拟机·调优
funnycoffee12324 分钟前
Huawei 6730 Switch software upgrade example版本升级
java·前端·华为
Java初学者小白24 分钟前
秋招Day15 - Redis - 缓存设计
java·数据库·redis·缓存
缘来是庄25 分钟前
设计模式之组合模式
java·设计模式·组合模式
DKPT26 分钟前
Java组合模式实现方式与测试方法
java·笔记·学习·设计模式·组合模式
G探险者42 分钟前
《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
java·开发语言·rpc
刘大猫261 小时前
Datax安装及基本使用
java·人工智能·算法
Kyrie_Li1 小时前
(十五)Spring Test
java·后端·spring
马里奥Mario1 小时前
拯救被日志拖垮的线程池:Logback异步化改造实战
java