Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 h:JSF复合组件中的INPUTHIDEN未提交给支持bean_Jsf 2_Codemirror_Composite Component - Fatal编程技术网

Jsf 2 h:JSF复合组件中的INPUTHIDEN未提交给支持bean

Jsf 2 h:JSF复合组件中的INPUTHIDEN未提交给支持bean,jsf-2,codemirror,composite-component,Jsf 2,Codemirror,Composite Component,我正在创建一个基于CodeMirror文本编辑器的JSF复合组件,它的功能非常简单。现在我的组件按预期显示(基本编辑器加上一个额外的CodeMirror实例进行比较) 我的代码: <cc:interface> <!-- attributes --> ... </cc:interface> <cc:implementation> <h:outputStylesheet library="..." name="..."

我正在创建一个基于CodeMirror文本编辑器的JSF复合组件,它的功能非常简单。现在我的组件按预期显示(基本编辑器加上一个额外的CodeMirror实例进行比较)

我的代码:

<cc:interface>
    <!-- attributes -->
    ...
</cc:interface>

<cc:implementation>
    <h:outputStylesheet library="..." name="..." />
    ...

    <h:outputScript library="..." name="..." />
    ...

    <div id="#{cc.clientId}">
        <h:panelGroup id="pgContent" styleClass="#{cc.attrs.styleClass}" style="#{cc.attrs.style}" rendered="#{cc.attrs.rendered}">
            <h:inputHidden id="#{cc.clientId}_inputHiddenMain" value="#{cc.attrs.value}" immediate="true">
                <c:if test="#{not empty cc.attrs.converter}">
                    <f:converter converterId="#{cc.attrs.converter}" />
                </c:if>
            </h:inputHidden>
            <h:inputHidden id="#{cc.clientId}_inputHiddenLeft" value="#{cc.attrs.origLeft}" immediate="true" rendered="#{cc.attrs.origLeft ne null}">
                <c:if test="#{not empty cc.attrs.converter}">
                    <f:converter converterId="#{cc.attrs.converter}" />
                </c:if>
            </h:inputHidden>
            <h:inputHidden id="#{cc.clientId}_inputHiddenRight" value="#{cc.attrs.origRight}" immediate="true" rendered="#{cc.attrs.origRight ne null}">
                <c:if test="#{not empty cc.attrs.converter}">
                    <f:converter converterId="#{cc.attrs.converter}" />
                </c:if>
            </h:inputHidden>
        </h:panelGroup>
    </div>

    <script type="text/javascript">
    /* <![CDATA[ */
        if(#{cc.attrs.rendered}){
            if (!com) {
                var com = {};
            }

            if (!com.example) {
                com = {
                    example: {}
                };
            }

            if (!com.example.faces) {
                com.example = {
                    faces: {}
                };
            }

            if (!com.example.faces.codemirrormerge) {
                com.example.faces.codemirrormerge = {
                    init: function(id, clientId, styleClass, ...) {

                        var cmmInput = $("[id='" + clientId + ":" + id + "_inputHiddenMain']"),
                            cmmOrigLeft = $("[id='" + clientId + ":" + id + "_inputHiddenLeft']"),
                            cmmOrigRight = $("[id='" + clientId + ":" + id + "_inputHiddenRight']"),
                            target = $('.' + styleClass),
                            options = {
                                    value: cmmInput.val(),
                                    revertButtons : revertButtons,
                                    showDifferences : showDifferences,
                                    connect : connect,
                                    collapseIdentical : collapseIdentical,
                                    mode: mode,
                                    theme: theme,
                                    autoRefresh: true,
                                    ...
                                },
                            myCodeMirrorMerge = CodeMirror.MergeView(target[0], options),
                            myCodeMirror = myCodeMirrorMerge.editor();

                            myCodeMirror.on("blur", function() {
                                $("[id='" + clientId + ":" + id + "_inputHiddenMain']").val(myCodeMirror.getValue());
                            });                    
                    }
                }
            }

            // init component
            com.example.faces.codemirrormerge.init('#{cc.attrs.id}', '#{cc.clientId}', '#{cc.attrs.styleClass}', ...);
        }
        /* ]]> */
    </script>
</cc:implementation>
inpurthidden
value和编辑器内容应该在一个支持bean中提交,但它不是。我还尝试使用
process=“@(.myStyleClass)”
显式处理整个组件,但没有成功

所以我的问题是:
inpurthidden
值为什么没有在支持bean中提交


谢谢

这个
id=“#{cc.clientId}\u inputHiddenMain”
真的应该是你所有inputhidden的
id=“#{cc.id}\u inputHiddenMain”
吗?完全错过了,谢谢!你应该为我的问题写一个答案,可能对其他用户有用。
<myns:codeMirrorMerge id="inputContent" styleClass="myStyleClass" origLeft="#{bean.origLeft}" origRight="#{bean.origRight}" value="#{bean.content}" converter="escapeConverter" mode="text/x-plsql" theme="eclipse"
                            matchBrackets="true" closeBrackets="true" activeLine="true" autocompleteSql="true" lineWrapping="true" />
<p:commandButton id="btnSave" value="Save" action="#{bean.saveContent}" />