【问题标题】:rich:modalPanel reloading page on hide丰富:modalPanel 在隐藏时重新加载页面
【发布时间】:2013-07-23 17:19:31
【问题描述】:

我有一个使用 Richfaces 的 JSF 页面,并带有一些这样的帮助按钮:

<rich:componentControl for="panelHelp" event="oncomplete" operation="show" />

调用的面板是这样的:

<rich:modalPanel id="panelHelp" minHeight="250" minWidth="500"
    keepVisualState="true" resizeable="true" moveable="true">
    <f:facet name="header">
        <h:outputText value="Help" />
    </f:facet>
    <f:facet name="controls">
        <h:commandLink value="">
            <h:graphicImage value="/close2.png" title="Close" />
            <rich:componentControl for="panelHelp" event="onclick" operation="hide" />
        </h:commandLink>
    </f:facet>
    <h:panelGrid columns="1" width="100%">
        <h:outputText escape="false" id="txtHelp"
        value="#{msgHelp}" style="width: 100%; height: 190px" />
    </h:panelGrid>
</rich:modalPanel>

但是,每当我按下按钮关闭面板时,它都会重新加载整个页面,而不是简单地隐藏面板。

我做错了什么,或者有更好的方法吗?

我使用的是 Richfaces 3.3.3 版

【问题讨论】:

    标签: jsf richfaces modal-dialog


    【解决方案1】:

    使用 a4j:commandLink 代替 h:commandLink 并提供 a4j:support。这应该可以解决问题。

    【讨论】:

      【解决方案2】:

      由于您使用了&lt;h:commandLink/&gt;,它正在重新加载整个页面,这将触发整个 JSF 请求处理生命周期。要获得所需的结果,您不需要命令链接组件。您真正需要的是:

      <f:facet name="controls">
          <h:graphicImage id="closeButton" value="/close2.png" title="Close" />
          <rich:componentControl attachTo="closeButton" for="panelHelp" event="onclick" operation="hide" />
      </f:facet>
      

      我们在这里所做的是在点击图片时触发&lt;rich:componentControl/&gt;;不需要链接。我假设您使用的是 Richfaces 3.X。 (RF 4.X 已弃用 attachTo 属性)

      【讨论】:

      • 我使用的是 3.3.3 版本,我会将信息添加到问题中,因为我不知道版本是否相关。尽管如此,这仍然不起作用,并且在按下关闭按钮时页面仍然重新加载。
      【解决方案3】:

      以上答案适用于 Richfaces 3.x,如果您使用的是 Richfaces 4.x,那么给定的代码将有效。

      <f:facet name="controls">
          <h:graphicImage value="/close2.png" >
              <rich:componentControl target="closeButton" operation="hide" event="click" />
          </h:graphicImage>
      </f:facet>
      

      【讨论】:

      • 由于我使用的是 3.3.3 版本,这只会使按钮消失,但尝试一下肯定没有坏处:)
      【解决方案4】:

      disableDefault="true" 属性添加到您的rich:componentControl 以禁用点击链接的默认行为。

      【讨论】:

      • 添加后仍然重新加载。
      • @fcm 您确定将更改正确部署到服务器吗?例如。 kolossus 的回答甚至没有链接,所以没有什么会导致页面刷新。
      • 很确定我做到了。例如,Haseeb 的回答产生了影响,尽管由于版本不兼容而无法正常工作
      猜你喜欢
      • 2011-10-15
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多