rich:modalPanel重载页面上的hide

时间:2013-07-23 17:19:31

标签: jsf richfaces modal-dialog

我有一个JSF页面,使用richfaces和一些帮助按钮,如下所示:

<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

4 个答案:

答案 0 :(得分:1)

由于您使用了<h:commandLink/>,它正在重新加载整个页面,这将触发整个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>

我们在这里做的是点击图片时点击<rich:componentControl/>;没有必要链接。我假设你正在使用Richfaces 3.X. (RF 4.X已弃用attachTo属性)

答案 1 :(得分:1)

上面的答案适用于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>

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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