0

我有一个使用 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 版

4

4 回答 4

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属性)

于 2013-07-24T02:44:35.963 回答
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>
于 2013-07-24T07:19:05.433 回答
1

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

于 2013-07-24T10:49:43.403 回答
0

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

于 2013-07-24T09:55:37.413 回答