gpt4 book ai didi

ajax - JSF ViewParam 必需 +AJAX 中断页面

转载 作者:行者123 更新时间:2023-12-03 01:33:54 24 4
gpt4 key购买 nike

当我单击下面页面上的命令按钮时,导航失败。 (单击按钮刷新页面,删除 URL 参数并显示所需的错误消息,而不是导航到索引页面)

但是,如果我删除必需的属性或删除 f:ajax 标记,导航就可以正常工作。

使用 com.sun.faces JSF 2.1.13 和 primefaces 3.4。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head></h:head>

<f:metadata>
<f:viewParam name="product"
required="true" requiredMessage="Bad request. Please use a link from within the system."/>
</f:metadata>

<body>

<h:form id="form">
<h:selectBooleanCheckbox>
<f:ajax update="form" />
</h:selectBooleanCheckbox>
<h:commandButton value="buy" action="/index.xhtml?faces-redirect=true" />
</h:form>

</body>
</html>

最佳答案

我假设 update="form"是一种粗心的过度简化,您实际上打算使用 render="@form"并将其与 PrimeFaces 等混淆。

回到具体问题,这是由执行非 ajax 回发引起的,该回发也会触发 View 参数的处理。

要么仅在非回发时需要它(但要确保 bean 处于 View 范围内),

<f:viewParam ... required="#{not facesContext.postback}" />

或者在回发时传递它

<h:commandButton ...>
<f:param name="product" value="#{bean.product}" />
</h:commandButton>

或使用OmniFaces <o:viewParam> 相反,如果您已经在使用 View 范围 bean。它不会处理回发时的 View 参数。

<... xmlns:o="http://omnifaces.org/ui">
...
<o:viewParam ... />

关于ajax - JSF ViewParam 必需 +AJAX 中断页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com