我已经建立了一个基本的测试用例,我在其中体验了一些(对我而言)奇怪的行为。使用下面的设置时,编辑器中输入的值将仅h:outputText
在第二次提交时可见。例如
- 将编辑器中的值更改为“myvalue”
- 发送 Ajax 请求
- h:outputText 显示“测试”(来自 bean 的默认值)
- 将编辑器中的值更改为“另一个值”
- 发送 Ajax 请求
- h:outputText 显示“myvalue”
- 发送 Ajax 请求
- h:outputText 显示“另一个值”
注意:有一个自定义组合,如果需要,请询问代码(它只是为 TinyMCE 创建 textarea 并从下面加载 .js 文件)
索引.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";
}