【发布时间】:2011-12-14 17:55:18
【问题描述】:
我正在尝试查找可以传递给f:ajax 标记的event 属性的所有可能值的列表。
我知道我也可以从我的 .js 文件中传递函数名,但我只需要 JSF 附带的那些。
我只知道 click mouseover 和 keyup,但我相信还有更多。只是不知道在哪里可以找到它们。
【问题讨论】:
我正在尝试查找可以传递给f:ajax 标记的event 属性的所有可能值的列表。
我知道我也可以从我的 .js 文件中传递函数名,但我只需要 JSF 附带的那些。
我只知道 click mouseover 和 keyup,但我相信还有更多。只是不知道在哪里可以找到它们。
【问题讨论】:
我只是输入了一些我知道是无效的值,这是输出:
'whatToInput' 不是 HtmlPanelGrid 支持的事件。 请指定以下支持的事件名称之一:click、dblclick、 keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup。
所以你可以传递给 event 的值是
【讨论】:
<f:ajax> 的event 属性可以至少包含由相关JSF 组件生成的HTML 元素的所有支持的DOM events。找到它们的一种简单方法是检查JSF tag library documentation 中感兴趣的JSF 输入组件的所有on* 属性,然后删除“on”前缀。例如,呈现<input type="text"> 的the <h:inputText> component 列出了以下on* 属性(我已经删除了其中的“on”前缀,以便它最终成为DOM 事件类型名称):
blurchangeclickdblclickfocuskeydownkeypresskeyupmousedownmousemovemouseoutmouseovermouseupselect此外,JSF 还为 EditableValueHolder 和 ActionSource 组件提供了两个特殊的事件名称,真实呈现的 HTML DOM 事件取决于组件类型:
valueChange(将在文本/选择输入上呈现为change,在单选/复选框输入上呈现为click)action(将在命令链接/按钮上呈现为 click)以上两个是相关组件的默认事件。
一些 JSF 组件库有额外的自定义事件名称,这些名称通常是更专业的 valueChange 或 action 事件类型,例如 PrimeFaces <p:ajax>,其中支持 tabChange、itemSelect、itemUnselect、 dateSelect、page、sort、filter、close 等取决于父 <p:xxx> 组件。您可以在PrimeFaces Users Guide 中每个组件章节的“Ajax 行为事件”小节中找到它们。
【讨论】:
focus和blur。
h:form 仅支持 click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup。它不支持您列出的focus。如果你尝试使用它,你会得到一个TagException 说:<f:ajax> 'focus' is not a supported event for HtmlForm