【问题标题】:JSF h:inputText's keeps old data after a4j:commandButton submitJSF h:inputText 在 a4j:commandButton 提交后保留旧数据
【发布时间】:2012-05-25 02:59:23
【问题描述】:

好的,我有这样的事情:

<a4j:form ignoreDupResponses="true">
    <rich:tabPanel switchType="ajax" immediate="true" id="panelId">
        <rich:tab label="Name" name="NAME" action="#{bean.clearData()}">
            <h:inputText value="#{bean.value1}" required="true"/>
            <h:inputText value="#{bean.value2}" required="true"/>
            <rich:messages/>
            <a4j:commandButton action="#{bean.someAction()}" value="OK"
                reRender="panelId" />
        </rich:tab>
        <rich:tab label="Name2" name="NAME2">
            <!-- Some content -->
        </rich:tab>
    </rich:tabPanel>
</a4j:form>

bean.someAction() 是一个保存在我的数据库value1value2 中的函数。 bean.clearData() 是一个从 bean 中清除 value1value2 的函数,或者如果它已经保存在 DB 中,则加载它。

这是我的问题...当我输入value1 某个值,然后将value2 留空时,我会在&lt;rich:messages/&gt; 中打印一些消息。
然后我切换到选项卡“Name2”,然后返回选项卡“Name1”,网页将显示任何&lt;h:inputText/&gt; 的旧值,因为我执行了bean.clearData(),这些值在我的 bean 和他们甚至不在谈话中。

编辑:我的表单保留数据并且不清除它,即使它不再在 bean 中。

我能想到的只是浏览器缓存数据,我想避免在数据未保存在我的数据库中时加载数据。有谁知道如何解决这个问题? 我在 h:inputText 中尝试了 autocomplete="off" 但没有结果。

PS:使用 FireFox 12.0

【问题讨论】:

  • 您的“这是我的问题..”段落中的问题描述不清楚。请改写它。表单是否保留了值而不是清除它?
  • @AhamedMustafaM 我编辑了它,但你搞定了,这是我的问题。

标签: jsf ajax4jsf


【解决方案1】:

您是否尝试在您的&lt;a4j:form&gt; 中使用reRender="panelId"

【讨论】:

  • 我添加了它,它似乎工作,但我发现每次在提交后切换选项卡时重新渲染表单以避免这个似乎是由于浏览器的自动完成引起的问题是荒谬的。我知道如果用户不喜欢这个,他们可以禁用它,但他们中的一些人几乎不知道如何打开电脑
【解决方案2】:

在浏览器设置中提供清晰的历史记录、cookie、缓存等automatically
我想它会起作用的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2015-04-18
    • 2015-01-03
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多