这次JSF的项目中遇到一种特殊情况,在一个CommandLink的动作中先激活Manage Bean中的功能代码段,然后再执行一段脚本代码,查看了RichFaces的手册后决定使用a4j:jsFunction来实现,实现过程如下:
首先需要在页面中声明两个脚本函数:
......
<script type="text/javascript">
? function showContent(){
? ?alert("aaa"); ??
? }
? function [color=red]callScript[/color](){
? }
</script>
......
其中showContent是真正想执行的脚本代码,callScript没有实际用途,只是用来激活a4j:jsFunction功能,
CommandLink调用脚本callScript自动激活a4j:jsFunction:
......
<h:commandLink onmouseup="[color=red]callScript[/color]()"
? value="Test"/>
......
接下来就该添加a4j:jsFunction标签:
......
<a4j:jsFunction name="[color=red]callScript[/color]" action="#{testBean.unzipMmsZipFile}"
? oncomplete="showContent()" />
......
其中testBean为后台Manage Bean的实例,红色标注的部分必须相同,要不无法激活a4j:jsFunction部分的功能,有些人可能会想既然callScript脚本没有实际意义,为什么还要添加这段无用代码,直接把CommandLink和a4j:jsFunction中的callScript换成showContent不就行了,这样照样可以激活a4j:jsFunction的功能,如果只是为了让a4j:jsFunction触发Manage Bean中的某个事件的话这样确实可行,但是在本例中会出现问题,导致a4j:jsFunction中的oncomplete不能正常执行,所以在这里声明了一个无用的脚本函数,还有一点需要注意,在本例中最好使用action来激活Manage Bean中的功能代码,而不要使用actionListener,在我的测试中,利用actionListener能够正常激活Bean中的功能代码,但是有时会出现a4j:jsFunction中的oncomplete无法正常执行的情况,所有还是建议使用action
转自:http://dev.firnow.com/course/1_web/javascript/jsjs/2008828/138149.html
**********************************************************************************
http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/a4j_actionparam.html
**********************************************************************************
6.1.2.2. Details of Usage
The <a4j:actionparam> component has 3 main attributes:
*
"name" defines a name of this parameter
*
"value" defines initial value of this parameter or a value binding
*
"assignTo" defines updatable bean property. This property will be updated if the parent command component performs an actionEvent. The update occurs in the same phase as the actionEvent is processed (INVOKE_APPLICATION, PROCESS_VALIDATIONS, or APPLY_REQUEST_VALUES, depending on the values of the "immediate" and "bypassUpdates" attributes).
Example:
...
<h:form id="form">
<a4j:commandButton value="Set Name to Alex" reRender="rep">
<a4j:actionparam name="username" value="Alex" assignTo="#{actionparamBean.name}"/>
</a4j:commandButton>
<br/>
<h:outputText id="rep" value="Name: #{actionparamBean.name}"/>
</h:form>
...
There is a managed bean:
...
public class ActionparamBean {
private String name = "John";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
...
You can use <a4j:actionparam> not only with Ajax components, but with non-ajax command component also. This feature allows to update model values without invoking even a single line of Java code on the server side. The usage of this feature you can find at ActionParameter Usage page of RichFaces LiveDemo.
If you need to convert the value before the "Update Model" phase you can specify the converter in the "converter" attribute.
Note:
The property is assigned with a parameter value on the "Update Model" phase. Therefore if the validation of the form is failed, this phase will be skipped and the property won't be updated.
It is possible to use JavaScript expression or function in the "value" attribute. In this case the "noEscape" attribute should be set to "true". The result of this JavaScript invocation is sent to the server as a value of <a4j:actionparam> .
分享到:
相关推荐
a4j:actionparam a4j:status a4j:loadBundle a4j:mediaOutput 5. Ajax4jsf内建的换肤功能 6. 技术要求 支持的java版本 支持的 JavaServer Faces 实现 支持的服务器 支持的浏览器 7. 附加的设置 Web程序描述...
1. **异步通信**:A4J支持在后台与服务器进行异步数据交换,这意味着用户可以在不刷新整个页面的情况下更新特定部分。这种技术显著提高了Web应用的性能和用户友好性。 2. **事件驱动**:A4J利用JSF的事件模型,允许...
在本文中,我们将深入探讨`rich:fileUpload`和`a4j:mediaOutput`这两个组件在实际开发中的使用,特别是在处理文件上传和媒体输出时的关键知识点。它们都是RichFaces库的一部分,这是一个强大的JavaServer Faces (JSF...
- 可以与`a4j:commandLink`、`a4j:commandButton`、`a4j:jsFunction`等控件结合使用,实现参数的传递。 3. **a4j:form与h:form的区别** - `a4j:form`和`h:form`都可以作为表单的容器。 - 使用`a4j:form`时,如果...
在JSF(JavaServer Faces)框架中,`<h:selectOneMenu>` 是一个用于创建下拉选择框的组件,而 `<a4j:support>` 是RichFaces库提供的一种Ajax支持的标签,它允许我们实现页面的部分更新,提高用户体验。这篇博客文章...
3. **请求和响应处理**:A4J使用`<a4j:jsFunction>`来定义JavaScript函数,这些函数可以触发AJAX请求,并处理服务器返回的响应。 4. **区域更新**:A4J提供了`<a4j:region>`标签,可以定义页面上的特定区域,当AJAX...
`<a4j:jsFunction>`允许定义一个JavaScript函数,这个函数可以直接与服务器端进行通信,触发AJAX请求。开发者可以指定此函数的参数,以及调用后执行的服务器端方法。这提供了在客户端执行服务器操作的能力。 3. **...
- **a4j:actionparam**: 传递参数到 AJAX 请求。 - **a4j:status**: 显示 AJAX 请求的状态。 - **a4j:loadBundle**: 加载资源包。 - **a4j:mediaOutput**: 输出多媒体资源。 #### 五、内建的换肤功能 **介绍**: ...
- **Parameters and JavaScript**:说明如何通过参数和JavaScript来配置 `<a4j:jsFunction>`。 - **Referencedata**:给出具体示例和参考数据。 ##### 4.7 `<a4j:poll>` `<a4j:poll>` 组件用于周期性地向服务器...
1. **实时更新**:A4J允许部分页面在不刷新整个页面的情况下更新,提高用户体验。 2. **事件驱动**:它使用JSF事件模型来触发AJAX请求,使得处理用户交互更为方便。 3. **可配置的异步行为**:开发者可以定义何时...
7. `a4j:actionparam`:传递参数到Ajax动作。 8. `a4j:status`:管理Ajax请求的状态指示。 9. `a4j:loadBundle`:动态加载资源包。 10. `a4j:mediaOutput`:处理媒体输出。 Ajax4JSF还提供了内建的皮肤功能,允许...
作用:<a4j:ajaxListener> 能够监听用户的交互事件,例如,点击按钮、选择下拉菜单等,并执行相应的服务器端逻辑。 编写事件监听类:<a4j:ajaxListener> 需要编写事件监听类,用于处理用户的交互事件。 编写页面:...
在本文中,我们将探讨Ajax4JSF中的几个常用标签,包括`a4j:ajaxListener`、`a4j:region`和`a4j:page`,以及它们的相关属性和使用场景。 1. `a4j:ajaxListener`: 这个标签用于注册一个方法作为Ajax事件的监听器。...
- `a4j:actionparam`:传递参数到动作方法。 - `a4j:status`:管理 AJAX 请求状态。 - `a4j:loadBundle`:加载资源包。 - `a4j:mediaOutput`:处理媒体输出。 每个组件都有特定的属性,如 `attributes` 列表中所...
**决定发送什么**:你可以控制哪些数据随请求一起发送,比如通过`a4j:actionparam`传递参数,或者更新整个组件树的一部分。 **决定改变什么**:在服务器端处理完请求后,Ajax4JSF可以更新页面上的特定区域,而无需...
在a4j组件部分,作者从<a4j:actionparam>开始,逐一讲解了如何使用<a4j:form>、<a4j:region>、<a4j:support>、<a4j:commandButton>、<a4j:commandLink>、<a4j:status>等组件来实现AJAX功能。每个组件都附带了详细的...
xmlns:a4j="http://richfaces.org/a4j"> <h:head> <title>Highcharts in RichFaces ['js/myhc.js']}"> </h:head> <h:body> <rich:panel id="chartPanel"> <f:facet name="header">Highcharts Chart</f:...
- **a4j:actionparam**: 传递动作参数的组件。 - **a4j:status**: 显示 AJAX 请求状态的组件。 - **a4j:loadBundle**: 加载资源包的组件。 - **a4j:mediaOutput**: 输出媒体内容的组件。 #### 五、换肤功能 Ajax4...
- **a4j:actionparam**:传递额外的参数给服务器。 - **a4j:status**:显示操作状态。 - **a4j:loadBundle**:加载资源文件。 - **a4j:mediaOutput**:输出媒体文件。 #### 五、Ajax4jsf内建的换肤功能 - **...
Ajax4jsf组件库包括一系列的标签,如a4j:ajaxListener、a4j:region、a4j:page、a4j:support等,它们使得在JSF页面中添加Ajax行为变得更加简单。例如,a4j:ajaxListener可以监听页面上的特定事件并触发Ajax响应,而a4...