Primefaces 6.1,Primefaces Extensions 6.1,JSF Mojarra 2.3.0 (Netbeans 8.2 + Glassfish 4.1.1或Payara 4.1)
我有多个要求,我更喜欢在没有客户端JavaScript体操的情况下解决(即纯粹使用Java支持bean监听器)。
R1。我需要能够在p:textEditor
或p:editor
字段下方连续显示当前字符数(相对于允许的最大字符数)(BTW p:inputTextarea
提供的功能非常好 - 框)。
R2。我需要能够提醒用户他们没有保存更改(因此我需要检测模糊和焦点事件)。其中一个原因是编辑器正在复合组件中使用,而复合组件又可以在嵌套p:tab
/ p:accordionPanel
内多次使用,其中包含许多其他表单域和按钮。每个封装的编辑器都有自己的“保存”按钮。用户可能会关闭选项卡/手风琴或移动到另一个选项卡/手风琴而不保存,因此我想要一条运行警告消息,表示值已更改且尚未保存,如果用户离开表单字段,我希望用户咆哮没有保存更改。
我的第一个问题是valueChangeListener
和p:editor
的{{1}}似乎仅在我使用处理编辑器的p:textEditor
保存更改后的值时触发。 p:commandButton
和p:editor
似乎都不支持p:textEditor
听众:
p:ajax
(这也意味着我不能只是专注于'以及'模糊'事件。)
[我尝试了PrimeFaces Extensions Unable to attach behavior to non-ClientBehaviorHolder parent
,它允许pe:ckEditor
监听,但它还有其他多个问题。例如,在通过p:ajax
捕获确实连续的值更改时,从UIinput源获得的值始终是实际输入后面的一个字符,从而中断R1(连续字符计数)。它似乎也不提供与p:ajax
合作的PrimeFaces Core样式API操作,例如widgetVar
。它似乎不适用于clear()
。然而,它确实能够检测到模糊'并且'关注'。]
无论如何,我想知道p:resetInput
和p:textEditor
如何:
持续捕获值更改并在支持bean侦听器中处理它们。
当用户离开编辑器字段而没有保存更改时捕获。
当用户关闭包含编辑器的选项卡而未保存更改时捕获。