【问题标题】:Input Text is not changing in the bean variable输入文本在 bean 变量中没有改变
【发布时间】:2012-07-16 22:19:09
【问题描述】:

当我在浏览器中输入数据时,它应该假设在 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 或任何东西。不知道为什么会发生这种情况以及我应该从哪里开始诊断问题。

【问题讨论】:

    标签: jsf jsf-2 primefaces icefaces


    【解决方案1】:

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

    编辑:

    可能的解决方案是将&lt;ice:outputText&gt; 移出表单并从您的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>
    

    【讨论】:

    • @LuiggiMenoza 我相信是这样,你现在能建议我如何让它正确吗?当我更新它时,它应该在 outputext 中显示文本。
    • @Luiggi Mendoza 我从未使用过 IceFaces,但 ice:outputText 的行为不会像 h:outputText 一样(只获取值而从不尝试设置它)?
    • @eljunior 是的,&lt;ice:inputRichText&gt; 可以像&lt;h:inputText&gt; 一样工作,如果您使用纯 JSF 测试类似的示例,您将得到相同的错误。
    • @CooolAwesome 答案已更新。此外,IMO 更喜欢第二种方式,使用 JavaScript。
    • @LuiggiMendoza 实际上有 ice:inputRichText 的保存按钮,它重置了 bean 值。现在按下保存按钮后它正在工作。
    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多