jsf 响应客户端的ajax,了解PrimeFaces进程/更新和JSF f:ajax执行/呈现属性

BalusC..

284

该process属性是服务器端,只能影响UIComponent实现EditableValueHolder(输入字段)或ActionSource(命令字段).该process属性告诉JSF,使用以空格分隔的客户端ID列表,在(部分)表单提交时,必须通过整个JSF生命周期处理哪些组件.

然后,JSF将应用请求值(根据组件自己的客户端ID查找HTTP请求参数,然后在EditableValueHolder组件情况下将其设置为提交值,或者ActionEvent在ActionSource组件情况下将新值排队),执行转换,验证和更新模型值(EditableValueHolder仅限组件)并最终调用排队ActionEvent(ActionSource仅限组件).JSF将跳过处理process属性未涵盖的所有其他组件.此外,作为防止篡改请求的一部分,还将跳过在应用请求值阶段期间rendered属性求false值的组件.

请注意,在ActionSource组件(例如)非常重要的情况下,您还要在组件中包含组件本身process,特别是如果您打算调用与组件关联的操作.所以下面的例子打算在调用某个命令组件时只处理某些输入组件是不行的:

它只会处理#{bean.foo}而不是处理#{bean.action}.您还需要包含命令组件本身:

或者,正如您明显发现的那样,使用@parent它们恰好是具有共同父级的唯一组件:

或者,如果它们碰巧是父UIForm组件的唯一组件,那么您还可以使用@form:

如果表单包含您希望在处理过程中跳过的更多输入组件,有时会出现这种情况,这通常比您希望根据当前输入组件更新其他输入组件或某些UI部分更常见.一个ajax监听器方法.您不希望其他输入组件上的验证错误阻止执行ajax侦听器方法.

那就是了@all.这在process属性中没有特殊效果,但仅在update属性中有效.A process="@all"表现完全相同process="@form".HTML不支持同时提交多个表单.

这里顺便也一个很@none可能是在情况下,你完全不需要处理任何有用的东西,但只是想更新通过一些特定的部位update,特别是那些部分,其内容不依赖于提交的值或动作监听器.

注意应该是该process属性对HTTP请求有效负载(请求参数的数量)没有影响.这意味着,发送HTML表示中包含的"所有内容"的默认HTML行为

将不会受到影响.如果您有一个大型表单,并且希望将HTTP请求有效负载减少到只有处理中绝对必要的那些,即只有process属性覆盖的那些,那么您可以partialSubmit在或中设置PrimeFaces Ajax组件中的属性.或者,您也可以使用默认为此行为的OmniFaces 3.0+.

JSF的同等标准的PrimeFaces具体process是execute从.它的行为完全相同,只是它不支持逗号分隔的字符串而PrimeFaces字符串(虽然我个人建议只是坚持空格分隔的约定),也不支持@parent关键字.此外,知道默认为@formwhile 和默认值可能很有用@this.最后,了解process支持所谓的"PrimeFaces选择器" 也很有用,另请参阅更新="@(.myClass)"中的PrimeFaces选择器如何工作?

该update属性是客户端,可以影响所有UIComponents 的HTML表示.该update属性告诉JavaScript(负责处理ajax请求/响应的人),使用空格分隔的客户端ID列表,HTML DOM树中的哪些部分需要更新为对表单提交的响应.

然后,JSF将为此准备正确的ajax响应,仅包含要更新的请求部分.JSF将跳过updateajax响应中属性未涵盖的所有其他组件,从而保持响应有效负载较小.此外,将跳过在呈现响应阶段期间rendered属性求值的组件false.请注意,即使它会返回true,但如果最初是JavaScript,则无法在HTML DOM树中更新它false.您需要将其换行或更新其父级.另请参见Ajax update/render不适用于具有呈现属性的组件.

通常,您只想在(部分)表单提交时更新客户端中真正需要"刷新" 的组件.以下示例通过以下方式更新整个父表单@form:

(注意,process省略属性,因为默认属性@form)

虽然这可能工作正常,但输入和命令组件的更新在此特定示例中是不必要的.除非您更改模型值foo和bar内部action方法(在UX透视图中反过来又不直观),否则无法更新它们.消息组件是唯一真正需要更新的组件:

然而,当你有很多这样的时候,这会变得乏味.这就是PrimeFaces选择器存在的原因之一.这些消息组件在生成的HTML输出中有一个共同的样式类ui-message,因此以下内容也应如下:

(请注意,您应该在消息组件上保留ID,否则@(...)将无法工作!再次,请参阅如何更新PrimeFaces选择器="@(.myClass)"工作?了解详细信息)

该@parent更新只父组件,因此其覆盖电流分量和所有的兄弟姐妹和他们的孩子.如果您将表单中的表单与每个自己的职责分开,这将更有用.该@this更新,显然,只有电流分量.通常,仅当您需要在操作方法中更改组件自己的HTML属性之一时,才需要这样做.例如

oncomplete="doSomething('#{bean.value}')" />

想象一下,如果组件没有更新,那么oncomplete需要使用value更改的组件action,那么这个构造就不会有效,原因oncomplete很简单,因为它是生成的HTML输出的一部分(因此评估了所有EL表达式)在渲染响应期间).

该@all更新整个文档,应小心使用.通常,您希望使用真正的GET请求,而不是通过普通链接(或

JSF的同等标准的PrimeFaces具体update是render从.它的行为完全相同,只是它不支持逗号分隔的字符串而PrimeFaces字符串(虽然我个人建议只是坚持空格分隔的约定),也不支持@parent关键字.双方update并render默认为@none(这是"无").

也可以看看:

@Rapster:因为`process`没有设置,所以它使用`@ form`的默认值.这也在上面的答案中解释. (2认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PrimeFaces主要标签学习。 1 PrimeFaces综述 3 1.1 安装 3 1.2 配置,JSF2.0环境下用PrimeFace2.x 4 1.3 Hello World入门示例 4 1.4 UI组件: 4 2 UI组件 5 2.1 布局 5 2.1.1 Layout 页面布局 5 2.1.2 Panel用于包含其它组件,提供象windows窗口式的外观。 8 2.1.3 TabView 分页式面板组件 8 2.1.4 OutputPanel 仅用于显示元素 9 2.1.5 Fieldset 9 2.1.6 Dashboard 仪表盘 10 2.1.7 Themeswitcher 主题切换器,动态切换主题 11 2.1.8 Separator空白分隔区域 11 2.1.9 Spacer行内加空格 11 2.2 菜单 11 2.2.1 Menu 11 2.2.2 Menubar 12 2.2.3 MenuButton 13 2.2.4 Toolbar 13 2.2.5 Stack :堆叠式菜单(竖向) 13 2.2.6 Dock :动画鱼眼式菜单(横向) 14 2.3 按钮: 15 2.3.1 Button 15 2.3.2 CommandButton 15 2.3.3 CommandLink 17 2.3.4 ContextMenu 17 2.3.5 HotKey 17 2.4 输入组件 18 2.4.1 文本输入 18 2.4.1.1 Editor 18 2.4.1.2 Password 19 2.4.1.3 Password Strength 19 2.4.1.4 inputMask 输入掩码,实现格式化输入。 19 2.4.1.5 InputText 20 2.4.1.6 InputTextarea 20 2.4.1.7 Watermark :文本输入内容提示 20 2.4.1.8 Keyboard 显示一个虚拟键盘,用以支持输入字符。 21 2.4.1.9 Inplace 替换文本 22 2.4.2 选择式输入 22 2.4.2.1 AutoComplete :自动补全 22 2.4.2.2 PickList 选择列表 25 2.4.2.3 Slider 滑动条 26 2.4.2.4 Spinner 27 2.4.3 其它格式数据的输入: 27 2.4.3.1 Spreadsheet电子表格 27 2.4.3.2 Calendar 各种格式的日期输入与显示 28 2.4.3.3 Schedule 日程计划输入组件 31 2.4.3.4 Captcha :变形字符验证 31 2.4.3.5 Color Picker 32 2.5 集合(复杂格式)数据的输出与显示: 33 2.5.1 BreadCrumb :层次化页面导航条 >…>….> 33 2.5.2 Accordion:一个容器组件,它用tab动态地显示折叠或展开过程。 34 2.5.3 Carousel:多用途,标签式、分布式显示 35 2.5.4 Galleria 图片陈列廊 36 2.5.5 LightBox :图片加亮显示 37 2.5.6 DataGrid 数据栅格 37 2.5.7 DataList 用列表的形式显示数据,每个栅格可显示多个数据项 39 2.5.8 DataTable数据表格 41 2.5.9 Tree 树形显示 46 2.5.10 TreeTable 树表 47 2.5.11 DragDrop 50 2.5.11.1 Draggable组件: 50 2.5.11.2 Droppable组件 51 2.5.12 Charts基于flash的图形生成与显示 52 2.6 数据导出: 54 2.6.1 Data Exporter 54 2.6.2 Printer 56 2.7 状态: 56 2.7.1 ProgressBar 56 2.7.2 NotificationBar 57 2.8 对话框: 58 2.8.1 ConfirmDialog 58 2.8.2 Dialog 58 2.9 图形图像多媒体: 59 2.9.1 ImageCompare :提供丰富的接口比较两副图像 59 2.9.2 Graphic Text 文本图象化显示 60 2.9.3 ImageCropper 60 2.9.4 ImageSwitch 61 2.9.5 Google Maps 地图 61 2.9.6 Dyna Image 63 2.9.7 Media 65 2.9.8 Star Rating 65 2.9.9 Wizard: 66 2.10 消息: 66 2.10.1 Growl Mac风格的消息显示 66 2.10.2 Message/Messages 67 2.10.3 Tooltip 67 2.11 文件处理: 67 2.11.1 FileUpload 上传文件 67 2.11.2 FileDownload 下载文件 69 2.11.3 IdleMonitor 屏幕凝滞 70 2.11.4 Terminal 70 2.12 辅助功能(辅助其它JSF组件,给它们添加新的功能和行为): 71 2.12.1 Ajax Engine 71 2.12.2 Ajax Poll轮询 72 2.12.3 Ajax远程调用p:remoteCommand 72 2.12.4 Ajax Status 显示ajax后台运行状态。 72 2.12.5 Focus 73 2.12.6 Effect: 73 2.12.7 Collector : 74 2.12.8 Resizable 给任何JSF组件添加可调整大小的行为。 74 2.12.9 RequestContext : 75 3 TouchFaces 76 3.1.1 移动UI工具 76 3.1.2 Ajax Push/Comet 77 3.1.3 几分钟实现聊天应用: 78 4 附录 79 4.1 全部UI组件列表 84 4.2 PrimeFaces常用属性集 85

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值