Jsf rich:modalPanel在隐藏时重新加载页面

Jsf rich:modalPanel在隐藏时重新加载页面,jsf,richfaces,modal-dialog,Jsf,Richfaces,Modal Dialog,我有一个使用richfaces的JSF页面,其中有几个帮助按钮,如下所示: <rich:componentControl for="panelHelp" event="oncomplete" operation="show" /> 该小组称为: <rich:modalPanel id="panelHelp" minHeight="250" minWidth="500" keepVisualState="true" resizeable="true" moveabl

我有一个使用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请求处理生命周期。要获得所需的结果,不需要命令链接组件。您真正需要的是:

<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>


我们在这里所做的是在点击图像时触发
;不需要链接。我假设你使用的是RichFaces3.X。(rf4.X已经弃用了
attachTo
属性)

它正在重新加载整个页面,因为您使用了
,这将触发整个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>


我们在这里所做的是在点击图像时触发
;不需要链接。我假设你使用的是RichFaces3.X。(RF 4.X已经弃用了
attachTo
属性)

上述答案在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>

以上答案将在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>


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

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

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

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

我使用的是3.3.3版,我会将信息添加到问题中,因为我不知道该版本与此相关。尽管如此,这还是不起作用,按关闭按钮后页面仍会重新加载。我使用的是3.3.3版本,我会将信息添加到问题中,因为我不知道该版本与此相关。尽管如此,这仍然不起作用,而且在按下关闭按钮时页面仍会重新加载。因为我使用的是3.3.3版,这只会使按钮消失,但尝试一下肯定不会有什么坏处:)因为我使用的是3.3.3版,这只会使按钮消失,但尝试一下肯定没什么坏处:)添加此内容后仍会重新加载。@fcm您确定已将更改正确部署到服务器上吗?例如,kolossus的答案甚至没有链接,所以没有任何东西会导致页面刷新。我很确定我做到了。例如,Haseeb的回答有一定的影响,尽管它没有起作用,因为添加此选项后仍然会重新加载版本不兼容。@fcm是否确实正确地将更改部署到服务器?例如,kolossus的答案甚至没有链接,所以没有任何东西会导致页面刷新。我很确定我做到了。例如,Haseeb的回答有一定的影响,尽管它因为版本不兼容而不起作用