这是我的用例:
我的.xhtml页面中有一个CKEditor和隐藏值,如下所示:
<p:panelGrid columns="1" id="pnTemplateHeader" style="width:700px">
<h:inputHidden required="false" value="#{templateBean.headerContent}" id="headerValue" binding="#{templateBean.hiddenHeader}"/>
<h:inputTextarea cols="90" rows="20" class="ckeditor" id="head" name="head" >
#{templateBean.headerContent}
</h:inputTextarea>
<script type="text/javascript" >
CKEDITOR.replace('head', {
removeButtons: 'Underline,Strike,Subscript,Superscript,Anchor,Styles,Specialchar',
});
</script>
</p:panelGrid>
现在,我需要能够检索用户在CKEditor中输入的所有文本,我已经在http://kb4dev.com/tutorial/jsf-and-ckeditor/jsf-2.x--ckeditor-integration-guide
中找到了这种方式他们说我可以使用以下内容从隐藏在辅助bean中检索值。
.xhtml:
<h:commandButton id="previewTemplateButton" onclick="document.getElementById('frmCreateTemplate:footerValue').value = CKEDITOR.instances.footer.getData(); action="#{templateBean.export2PDF}" >
</h:commandButton>
但是当我获得支持bean的值时,我只得到一个NULL值。
支持bean:
System.out.println("Values: footer=" + footerContent + ", body= " + bodyContent + ", header=" + headerContent);
可能出现什么问题?
我已经测试了几种方法,例如在支持bean中访问隐藏组件,如下所示:
UIViewRoot root = FacesContext.getCurrentInstance().getViewRoot();
UIComponent hiddenHeaderComp = root.findComponent("headerValue");
hiddenHeaderComp = getUIComponentOfId(root, "headerValue");
hiddenHeader = (UIInput)hiddenHeaderComp;
if(hiddenHeader != null){
System.out.println("After retrieving value: " + hiddenHeader.getValue());
}
但这也不起作用。 我该怎么办?