在不更改页面的情况下调用托管 bean 函数
Calling Managed bean function without changing page
在 JSF 2.2 中,每当我在 xhtml 页面中有一行时:<h:commandButton value="Click Me!" action="whatever" />
。单击此按钮会使浏览器变为 "move forward",以便我可以单击后退按钮并留在该 xhtml 页面上。这意味着当我单击 commandButton 十次时,我可以通过按浏览器的后退按钮返回十次。
我该怎么做才能使按钮不更改页面?我希望能够单击这样的按钮,在某些情况下更改页面,在某些情况下停留在当前页面上,而无需在浏览器历史记录中进行任何操作。
使用 AJAX 可能是您问题的解决方案。
如果您在表单元素内使用命令按钮,则单击会将带有 post 请求的表单数据发送到服务器。
<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}"/>
在 JSF 2.2 中,每当我在 xhtml 页面中有一行时:<h:commandButton value="Click Me!" action="whatever" />
。单击此按钮会使浏览器变为 "move forward",以便我可以单击后退按钮并留在该 xhtml 页面上。这意味着当我单击 commandButton 十次时,我可以通过按浏览器的后退按钮返回十次。
我该怎么做才能使按钮不更改页面?我希望能够单击这样的按钮,在某些情况下更改页面,在某些情况下停留在当前页面上,而无需在浏览器历史记录中进行任何操作。
使用 AJAX 可能是您问题的解决方案。
如果您在表单元素内使用命令按钮,则单击会将带有 post 请求的表单数据发送到服务器。
<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}"/>