当我在浏览器中输入数据时,应该假设在bean中设置变量参数。但它不是出于某种原因而设定的。有一次,它确实有效,而且不再有了。
<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>
public String getExecSummaryStr() {
return execSummaryStr;
}
public void setExecSummaryStr(String execSummary) {
this.execSummaryStr = execSummary;
}
我得到同样的东西,即使我改为inputText或任何东西。不知道为什么会发生这种情况以及我应该从哪里开始诊断问题。
答案 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>