2

私は基本的なテストケースをセットアップしましたが、その中で(私にとって)奇妙な動作が発生しました。以下のセットアップを使用する場合、エディターで入力された値はh:outputText、2 回目の送信時にのみ表示されます。例えば

  • エディターの値を「myvalue」に変更します
  • Ajax リクエストを送信する
  • h:outputText は「test」を示します (Bean のデフォルト値)
  • エディターの値を「anothervalue」に変更します
  • Ajax リクエストを送信する
  • h:outputText は "myvalue" を示しています
  • Ajax リクエストを送信する
  • h:outputText は「別の値」を示しています

注: カスタム コンポジットがあります。必要に応じてコードを要求してください (TinyMCE のテキストエリアを作成し、下から .js ファイルをロードするだけです)。

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 -> カスタム コンポジット 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";
}
4

1 に答える 1