TinyMCE's value in bean on second submit (using jsf.ajax.addOnEvent) -


i have set basic testcase in i'm experience (to me) weird behaviour. when using setup below, typed value in editor visible h:outputtext on second submit. e.g.

  • change value in editor "myvalue"
  • send ajax-request
  • h:outputtext shows "test" (default value bean)
  • change value in editor "anothervalue"
  • send ajax-request
  • h:outputtext shows "myvalue"
  • send ajax-request
  • h:outputtext shows "anothervalue"

note: there's custom composite, please ask code if needed (it creates textarea tinymce , loads .js file below)

index.xhtml

<h:body>     <h:form>         <mh:editor id="tinymceeditor"                     value="#{bean.value}" />         <h:commandbutton value="ajax">             <f:ajax execute="tinymceeditor"                      render="show" />         </h:commandbutton>         <h:outputtext id="show" value="#{bean.value}" />     </h:form> </h:body> 

jsfhandler.js -> included on header in custom composite mh:editor

jsf.ajax.addonevent(function(data) {     switch(data.status) {         case "begin":             tinymce.execcommand('mceremovecontrol',true,"tinymceeditor");             tinymce.triggersave();             break;          case "complete":             tinymce.execcommand('mceaddcontrol',true,"tinymceeditor");             break;          case "success":                         break;     } }); 

bean.java

@named @requestscoped public class bean {     private string value = "test"; } 

the jsf ajax begin event late in order take changes in form data account. ajax request prepared based on form data before event.

effectively, sequence follows:

  • user enters input (and leaves field).
  • html dom "change" event triggered on input field.
  • user clicks submit button.
  • html dom "click" event triggered on submit button.
  • jsf prepares ajax request.
  • jsf ajax "begin" event triggered on ajax request.
  • jsf sends ajax request.
  • ...

basically, should doing tinymce.triggersave() during html dom "click" event.

<h:commandbutton ... onclick="tinymce.triggersave()"> 

or, better, during html dom "change" event of tinymce textarea.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

qt - Errors in generated MOC files for QT5 from cmake -