在不更改页面的情况下调用托管bean函数

时间:2016-09-04 11:30:02

标签: jsf refresh commandbutton

在JSF 2.2中,只要我在xhtml页面中有一行:<h:commandButton value="Click Me!" action="whatever" />。单击此按钮可使浏览器向前移动&#34;这样我就可以点击后退按钮并保留在该xhtml页面上。这意味着当我单击commandButton十次时,我可以通过按下浏览器的后退按钮返回十次。 如何使按钮不更改页面?我希望能够点击这样一个按钮,在某些情况下可以更改页面,并且在某些情况下保留当前页面而不会在浏览器的历史记录中迈出一步。

1 个答案:

答案 0 :(得分:2)

使用AJAX可以解决您的问题。

如果您在表单元素中使用命令按钮,则单击会将带有发布请求的表单数据发送到服务器。

<h:form>
    <h:inputText id="inputId" value ="#{testController.message}"></h:inputText>
    <h:commandButton value="submit" action="#{testController.reverse}" />
</h:form>

如果在命令按钮中使用AJAX元素,则只会将execute属性指定的数据发送到服务器。响应仅包含render属性指定的html文件的一部分。这部分将插入到现有的html文件中。通过使用AJAX,不会刷新整个页面,因此它不会影响浏览器历史记录。

<h:form>
    <h:inputText id="inputId" value ="#{testController.message}"></h:inputText>
    <h:commandButton value="inputId" action="#{testController.reverse}" >
        <f:ajax execute="inputId" render="outputId" />
    </h:commandButton>
</h:form>

<h:outputText id="outputId" value="#{testController.output}"/>