输入文本在bean变量中没有变化

时间:2012-07-17 22:46:17

标签: jsf jsf-2 primefaces icefaces

当我在浏览器中输入数据时,应该假设在bean中设置变量参数。但它不是出于某种原因而设定的。有一次,它确实有效,而且不再有了。

XHMTL

<p:panel header="Previous Summary" toggleable="true"
                toggleSpeed="500"
                style="border: 1px solid white; background-color: #F0F8FF; text-align: left;">
                <ice:form>
                    <ice:inputRichText id="editor_prevsummary"
                        value="#{statusReport.prevSummaryStr}" width="1200" height="200"
                        rendered="#{statusReport.renderPrevSummTextIn}"
                        onchange="this.form.submit()"  />


                    <ice:outputText value="#{statusReport.prevSummaryStr}"
                        rendered="#{!statusReport.renderPrevSummTextIn}" escape="false"></ice:outputText>
                    <br />
                    <ice:commandButton action="#{statusReport.editPrevSummary()}"
                        value="Edit" partialSubmit="true" />
                    <ice:commandButton action="#{statusReport.updatePrevSumm()}"
                        partialSubmit="true" value="Update"  />
                </ice:form>
            </p:panel>

Bean值

  public String getExecSummaryStr() {

        return execSummaryStr;
    }

    public void setExecSummaryStr(String execSummary) {

        this.execSummaryStr = execSummary;
    }

我得到同样的东西,即使我改为inputText或任何东西。不知道为什么会发生这种情况以及我应该从哪里开始诊断问题。

1 个答案:

答案 0 :(得分:2)

您的问题是因为您在同一表单中使用<ice:inputRichText><ice:outputText>的相同变量。提交表单后,框架会将两个组件的值设置为#{statusReport.prevSummaryStr},从而导致您网站中出现异常行为。

编辑:

一种可能的解决方案是将<ice:outputText>移出表单并从commandButton中呈现。另一种解决方案可能是使用javascript来更新其值。你可以这样做:

<ice:inputRichText id="editor_prevsummary"
    value="#{statusReport.prevSummaryStr}" width="1200" height="200"
    rendered="#{statusReport.renderPrevSummTextIn}"
    onchange="document.getElementById('divText').innerHTML = this.value"  />
<div id="divText">

</div>