javascript - 如何从JSF中的html组件向服务器发送数据

标签 javascript html jsf-2

我的页面中有一个 CKEditor。像这样

<h:head>
    <title>Facelet Title</title>
    <script type="text/javascript" src="ckeditor/ckeditor.js"></script>

    <script language="JavaScript">

        function comeBack(){
            document.getElementById(editorValue).value = this.value;
        }

    </script>

</h:head>

<h:body >

    <h:form id="ckEditorForm" prependId="false" >

        <textarea id="editor1"
                  name="editor1"
                  onblur="alert(document.getElementById(editorValue).value = this.value);">

        </textarea>

        <script type="text/javascript">
            CKEDITOR.replace( 'editor1' );
        </script>

        <h:inputHidden value="#{editorBean.value}" id="editorValue" />

        <h:commandButton id="submit"
                         value="Submit"
                         action="welcome.xhtml" />


    </h:form>

</h:body>

@ManagedBean
@ViewScoped
public class EditorBean {

    private String value;

    /** Creates a new instance of EditorBean */
    public EditorBean() {

    } //end of constructor

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
        System.out.println("Content: "+value);
        System.out.println();

    }

} //end of class EditorBean

现在我希望用户按下提交按钮,然后将编辑器值保存到我的 bean 中。我发现这个论坛上有人建议使用隐藏字段技术,但它不起作用。难道我做错了什么?我怎样才能实现我想要的?

谢谢

最佳答案

您需要了解 JSF 是一个 HTML 代码生成器,并且 JavaScript 基本上只能访问 HTML DOM 树,而不能访问 JSF 源代码。

在浏览器中打开页面,右键单击并选择查看源代码。找到生成的 HTML <h:inputHidden>成分。它看起来像这样:

<input type="hidden" id="ckEditorForm:editorValue" name="ckEditorForm:editorValue" value="" />

请注意id属性值。您必须在 JavaScript 中准确使用此值 document.getElementById() :

document.getElementById("ckEditorForm:editorValue");

顺便说一句,使用 <h:inputTextarea> 更容易相反:

<h:inputTextarea id="editor1" value="#{editorBean.value}" />
<script>CKEDITOR.replace("ckEditorForm:editor1");</script>

关于javascript - 如何从JSF中的html组件向服务器发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8533965/

相关文章:

javascript - 时区作为 cookies jquery PHP javascript

java - 如何ajax jsf 2输出链接

jsf - ExtendedDataTable - 高度不起作用

html - 是否有适用于 Mac 的半途而废的免费 HTML 编辑器?

javascript - 单击按钮打开漂亮的照片(多张图片)

javascript - 有没有办法在呈现ajax响应之前禁用命令链接

javascript - 是否可以使用键盘选项卡选择 Span 对象?

javascript - 将子组件传递给不支持此功能的组件

javascript - 完整日历未在页面上显示/加载

css - 右侧的 HTML/CSS : Boostrap3 div placement with 2 on left, 1