我可以将哪些值传递给 f:ajax 标记的 event 属性?

Posted

技术标签:

【中文标题】我可以将哪些值传递给 f:ajax 标记的 event 属性?【英文标题】:What values can I pass to the event attribute of the f:ajax tag? 【发布时间】:2011-12-14 17:55:18 【问题描述】:

我正在尝试查找可以传递给f:ajax 标记的event 属性的所有可能值的列表。

我知道我也可以从我的 .js 文件中传递函数名,但我只需要 JSF 附带的那些。

我只知道 click mouseover 和 keyup,但我相信还有更多。只是不知道在哪里可以找到它们。

【问题讨论】:

【参考方案1】:

我只是输入了一些我知道是无效的值,这是输出:

'whatToInput' 不是 htmlPanelGrid 支持的事件。 请指定以下支持的事件名称之一:click、dblclick、 keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup。

所以你可以传递给 event 的值是

点击 dblclick 按键 鼠标按下 鼠标移动 鼠标悬停 鼠标移动

【讨论】:

【参考方案2】:

<f:ajax>event 属性可以至少包含由相关JSF 组件生成的HTML 元素的所有支持的DOM events。找到它们的一种简单方法是检查JSF tag library documentation 中感兴趣的JSF 输入组件的所有on* 属性,然后删除“on”前缀。例如,呈现<input type="text"> 的the <h:inputText> component 列出了以下on* 属性(我已经删除了其中的“on”前缀,以便它最终成为DOM 事件类型名称):

blur change click dblclick focus keydown keypress keyup mousedown mousemove mouseout mouseover mouseup select

此外,JSF 还为 EditableValueHolderActionSource 组件提供了两个特殊的事件名称,真实呈现的 HTML DOM 事件取决于组件类型:

valueChange(将在文本/选择输入上呈现为change,在单选/复选框输入上呈现为clickaction(将在命令链接/按钮上呈现为 click

以上两个是相关组件的默认事件。

一些 JSF 组件库有额外的自定义事件名称,这些名称通常是更专业的 valueChangeaction 事件类型,例如 PrimeFaces <p:ajax>,其中支持 tabChangeitemSelectitemUnselectdateSelectpagesortfilterclose 等取决于父 <p:xxx> 组件。您可以在PrimeFaces Users Guide 中每个组件章节的“Ajax 行为事件”小节中找到它们。

【讨论】:

这是一个很好的信息,这就是我想要的。但现在我有点怀疑。 DOM事件链接中的那些事件,会不会在某些浏览器中造成麻烦?我最感兴趣的是与拖放和焦点相关的事件。 标准 JSF 组件确实没有指定任何 HTML5 拖放属性(例如 PrimeFaces 可能会这样做)。但是,您可以在这里找到它们的概述:dev.w3.org/html5/spec/… 理论上,它们会被如此挂钩,但您必须确保由 JSF 生成的 HTML 元素确实支持它。至于焦点和焦点,你分别有focusblur 我明白了。所以更好的是我将我的 JSF 页面设置为 html5,这样我就可以拥有那些更高级的功能。感谢您的精彩回答。 我并不完全清楚您是否明确说明您提供的列表对于所有支持 ajax 的组件都是全面的,但每个组件将仅支持其中的一个子集。例如h:form 仅支持 click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup。它不支持您列出的focus。如果你尝试使用它,你会得到一个TagException 说:<f:ajax> 'focus' is not a supported event for HtmlForm

以上是关于我可以将哪些值传递给 f:ajax 标记的 event 属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何将父控件标记值传递给 ParameterConverter [重复]

如何将选定的最大和最小价格值传递给 html 中选择标记内的 java 脚本函数?

我将哪些值传递给 SQLConfigDataSource 的 Attributes 参数来为 Microsoft Paradox 驱动程序创建系统 DSN

哪些值可以分配给 `constexpr` 引用?

关于将值传递给方法的困惑? [复制]

通过if else语句将值传递给数据库