私は基本的なテストケースをセットアップしましたが、その中で(私にとって)奇妙な動作が発生しました。以下のセットアップを使用する場合、エディターで入力された値は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";
}