`
hanmiao
  • 浏览: 56919 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

通过 <p:commandButton> 的 oncomplete 属性实现其它按钮的激活与反激活

 
阅读更多
刚刚解决了壹個细小的技术问题,用 PrimeFaces 4.0 的 UI 组件完成界面元素的开发,XHTML 页面上共有三個按钮,id 分别为 verifyButton、viewButton、downloadButton,其中页面初始化时,verifyButton 处于激活状态(enable),viewButton 和 downloadButton 处于未激活状态(disable),当点击 verifyButton 之后,页面会向后台 Controller 发送 ajax 请求,然后在完成壹些业务逻辑之后返回页面,并将 viewButton 和 downloadButton 激活,此时三個按钮均处于可点击状态。页面部分源代码如下所示:
<h:form id="verificationForm">
<div class="button-padding right mt10">
	<p:commandButton id="verifyButton" value="校验" update="@this"
		widgetVar="verifyButton"
		disabled="#{!batchVerificationMB.enabledVerifyButton()}"
		process="@this batchVerificationTable"
		actionListener="#{batchVerificationMB.verify()}"
		oncomplete="validationUtil.handleAjaxResponse(args, displayErrorMessagesBathVerification, function(){displayVerifyMessage();viewButton.enable();downloadButton.enable();})" />
	<p:commandButton id="viewButton" value="查看"
		process="@this" widgetVar="viewButton"
		update=":verificationResultForm"
		onclick="verificationResultDialog.show();" />
	<p:commandButton id="downloadButton" value="导出" 
		process="@this" widgetVar="downloadButton"
		ajax="false" onclick="PrimeFaces.monitorDownload(start, stop)" icon="ui-icon-arrowthichk-s">
		<p:fileDownload value="#{fileDownloadController.file}" />
	</p:commandButton>
	<script type="text/javascript">
		viewButton.disable();
		downloadButton.disable();
	</script>
</div>
</h:form>

<h:form id="verificationResultForm">
//...此处省略部分代码
</h:form>
<p:dialog widgetVar="verificationResultDialog" modal="true" closable="true" resizable="false" width="800">
//...此处省略部分代码
</p:dialog>
其实只有两個地方需要注意,分别列举如下:
1、页面初始化时,我们需要通过Javascript脚本将viewButton和downloadButton设置为disable状态,见于第19和20行,其实就是普通的Javascript脚本;
2、另外,由于后面两個按钮是否激活是受按钮verifyButton控制的,所以我们需要在verifyButton里加上壹個属性 oncomplete,然后在 oncomplete 里面控制 viewButton 和 downloadButton 的激活状态;代码很长,但是并不复杂,实际只做了以下事情:先将后台反馈的信息显示在界面指定位置上,然后将 viewButton 和 downloadButton 激活;我们把 oncomplete 里的代码抽取出来是这样的。
validationUtil.handleAjaxResponse(
	args, 
	displayErrorMessagesBathVerification, 
	function(){
		//显示后台反馈的信息
		displayVerifyMessage();
		//将viewButton和downloadButton状态激活
		viewButton.enable();
		downloadButton.enable();
	}
)

其实说起来,PrimeFaces 4.0 的 <p:commandButton> 用起来并不复杂,只是自己还不熟悉其用法罢了。查看 PrimeFaces 4.0 官方文档是,它是这样介绍 oncomplete 属性的: 默认值为null,类型为String,当ajax请求完成之后客户端会回调属性oncomplete指定的内容。其实已经说的非常简单明了了。类似的事件属性还有 onstart、onsuccess、onerror 等,如果有兴趣的朋友可以自行查找 相关文档以了解更多细节。


分享到:
评论

相关推荐

    JSF控件详细参考手册

    - **&lt;h:commandButton&gt;**:命令按钮。 - **&lt;h:commandLink&gt;**:命令链接。 - **&lt;h:dataTable&gt;**:数据表格。 - **&lt;h:form&gt;**:表单容器。 - **&lt;h:graphicImage&gt;**:图形图像。 - **&lt;h:inputHidden&gt;**:隐藏输入字段...

    javaweb标签大全

    - `&lt;h:commandButton&gt;`:创建按钮,触发动作事件。 8. Freemarker和Velocity模板引擎标签: - Freemarker:`&lt;#if&gt;`、`&lt;#foreach&gt;`等,提供强大的模板语言功能。 - Velocity:`#if`、`#foreach`等,与Freemarker...

    jsf常用标签整理

    outputLabel&gt;标签通常用于显示与输入组件关联的标签,例如:&lt;h:outputLabel for="inputId" value="输入框标签"&gt;&lt;/h:outputLabel&gt;&lt;h:inputText id="inputId" value="#{backBean.inputValue}"&gt;&lt;/h:inputText&gt;`for`属性...

    datatable實用問題範例1

    - 触发方式有两种:一种是在页面加载完成后立即调用,另一种是在某些更新操作(如`&lt;p:commandButton&gt;`的`update`属性)完成后调用,确保在正确的时间点设置焦点和键盘导航。 此外,还提到了一个特定场景——修改...

    JSF标签暨注解规范

    `&lt;h:outputStylesheet&gt;`和`&lt;h:outputScript&gt;`用于添加CSS和JavaScript文件,`&lt;h:inputText&gt;`和`&lt;h:inputTextarea&gt;`是文本输入控件,`&lt;h:commandButton&gt;`和`&lt;h:commandLink&gt;`则用于创建命令按钮和链接。 3. **...

    java web 标签大全

    JSF标签如`&lt;h:outputText&gt;`显示文本,`&lt;h:inputText&gt;`创建输入字段,`&lt;h:commandButton&gt;`定义按钮,`&lt;f:view&gt;`定义视图范围。JSF的核心优势在于其组件化和事件驱动的特性,提供了丰富的UI组件和强大的数据绑定功能。...

    《JSF标签》简体中文版

    表格的每行可以通过`&lt;h:row&gt;`来定义,而表头和表尾则通过`&lt;h:column&gt;`和`&lt;h:columnGroup&gt;`实现。 JSF标签库是JSF框架的核心组成部分,掌握这些标签及其属性对于高效开发Web应用程序至关重要。通过合理利用这些标签...

    jsf 控件说明(很好)

    5. 其他:包括`&lt;h:form&gt;`、`&lt;h:message&gt;`、`&lt;h:messages&gt;`和`&lt;h:graphicImage&gt;`等。 JSF组件通常有若干共同的属性,如: - `id`:用于组件的唯一标识。 - `binding`:允许绑定到`UIComponent`对象。 - `rendered`:...

    myfaces标签库

    以上代码展示了如何使用MyFaces标签库中的`&lt;h:outputText&gt;`, `&lt;h:inputText&gt;`, `&lt;h:message&gt;`和`&lt;h:commandButton&gt;`等标签创建一个简单的登录表单。`#{bean.userName}`和`#{bean.password}`通过表达式绑定到后端Bean...

    jsf学习资料jsf学习资料

    - **`&lt;gc:commandButton&gt;`**:实现按钮控件,支持验证及确认对话框。 - **`&lt;gc:convertNumberFormat&gt;`**:用于格式化数字显示。 - **`&lt;gc:inputCode&gt;`**:输入代码或特定类型的文本。 - **`&lt;gc:panelGrid&gt;`**:用于...

    JSF中文标签

    - **命令(Command)类标签**:名称以`command`开头,常用于创建命令按钮或链接,例如`&lt;h:commandButton&gt;`。 - **选择(Selection)类标签**:名称以`select`开头,用于提供用户选择项,例如`&lt;h:selectOneMenu&gt;`。 -...

    j2ee经常使用的标签说明以及Eclipse中的jsp插件安装下载和使用

    - `&lt;h:commandButton&gt;`:执行服务器端操作的按钮。 - `&lt;h:form&gt;`:定义一个表单。 5. **JavaScript**:主要用在客户端进行交互,例如`&lt;script&gt;`标签用于引入或编写JavaScript代码,`&lt;a href="#" onclick="..."&gt;`...

    北大青鸟-JSF标签

    - `&lt;h:commandButton&gt;`和`&lt;h:link&gt;`:用于提交表单或导航到其他页面。 - `&lt;h:messages&gt;`:显示验证错误信息。 - `&lt;h:panelGrid&gt;`:布局组件,类似HTML的table。 - `&lt;h:selectOne&gt;`和`&lt;h:selectMany&gt;`:创建单选...

    java web标签大全

    JSF标签库包括h:标签(如&lt;h:outputText&gt;、&lt;h:commandButton&gt;)和f:标签(如&lt;f:view&gt;、&lt;f:converter&gt;),通过这些标签可以轻松创建和管理UI组件。 6. FreeMarker:FreeMarker是一个模板引擎,用于生成HTML或其他类型...

    重要知识JSF标签.pdf

    1. `&lt;h:outputLabel&gt;`:生成`&lt;label&gt;`标签,通过`for`属性与对应的输入组件关联。 2. `&lt;h:outputLink&gt;`:生成`&lt;a&gt;`链接标签,`value`属性可以绑定JSF表达式。 3. `&lt;h:outputFormat&gt;`:格式化输出文本,支持参数化,...

    Richfaces 常用组件使用手册中文版

    在a4j组件部分,作者从&lt;a4j:actionparam&gt;开始,逐一讲解了如何使用&lt;a4j:form&gt;、&lt;a4j:region&gt;、&lt;a4j:support&gt;、&lt;a4j:commandButton&gt;、&lt;a4j:commandLink&gt;、&lt;a4j:status&gt;等组件来实现AJAX功能。每个组件都附带了详细的...

Global site tag (gtag.js) - Google Analytics