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

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

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

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

【问题讨论】:

    标签: ajax jsf jsf-2


    【解决方案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,在单选/复选框输入上呈现为click
      • action(将在命令链接/按钮上呈现为 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
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2017-10-14
      • 2021-12-30
      • 2017-09-14
      相关资源
      最近更新 更多