0

我使用 Richfaces 3.1.2 和 JSF 1.1

textarea在一个表单中有两个按钮:SubmitUpdate

  1. 按钮Submit提交表单
  2. 单击按钮Update会在textarea

在 textarea 内部使用了验证器,如果 textarea 仅包含当前连接用户的名称,则此验证器将引发异常,例如,如果当前连接用户是“root”并且 textarea 包含“root”,则应该是异常抛出

Textarea 的代码(默认包含当前连接用户的名称):

<h:panelGroup id="messagePanel">
    <h:inputTextarea id="message" label="Update" value="#{beanName.message}">
        <f:validator validatorId="messageValidator" />
    </h:inputTextarea>
</h:panelGroup>

提交按钮:

<h:commandLink id="validerLink" value="Submit" action="accueil" 
    actionListener="#{beanName.saveInformation}">
    <f:param value="#{param.evenementId}" name="evenementId" />
</h:commandLink>

和更新按钮:

<a4j:commandLink id="inclureRapportLink" value="Update" 
    actionListener="#{beanName.updateText}" reRender="message">
    <f:param name="evenementId" value="#{param.evenementId}" />
</a4j:commandLink>

问题:如果文本区域包含当前连接用户的名称,则按钮Update不会更新文本,因为验证器会引发异常。

所以我想要做的是禁用验证器,但前提是用户点击按钮Update

我试图添加immediate="true"更新按钮,但这没有用,因为显然immediate="true"并且reRender="message"不能一起工作(bean 已更新,但不是前面)。

我也在这里尝试了这个解决方案:在重新渲染时跳过验证并仅在表单提交上应用,但这也不起作用,我得到了错误Undefined property clientId,并且即使required属性设置为 ,也会调用验证器false

有人能帮我吗?

4

0 回答 0