我有一个commandButton,我将用它来导航并将参数发送到另一个页面(所选对象的id,这样我就可以在从数据库中检索整个对象后将其加载到另一个页面中)。我知道commandButtons使用POST作为请求方法,并且它不适合导航,但在我的测试中,我接近使用它而不是任何其他方法的预期结果。
我的commandButton的代码是这样的:
<p:commandButton value="Start" action="#{startBean.goToNextPage()}">
<f:param name="objectId" value="#{startBean.object.Id}"/>
</p:commandButton>
问题发生在页面加载上(特别是在渲染commandButton时),因为在设置对象之前执行,当导航发生时,参数以'null'值发送给另一个。
所以,我想知道如何仅在单击commandButton时设置'value',或者导航到其他页面发送参数的其他方式,在这种情况下它可能使用GET或POST。
提前致谢!
更新
我会详细说明我真正想做的事情。
我正在尝试在导航到另一个页面时发送一个简单的参数(一个对象id)作为POST或GET。出于时尚的原因,我首先尝试使用<p:commandButton />
。 commandButton的action属性从managedBean调用一个方法,该方法返回它应该导航到的url。 goToNextPage()
看起来像是:
public String goToNextPage(){
String url = "nextPage.xhtml?" + "faces-redirect=true&objectId=" + this.object.getId();
return url;
}
在gotToNextPage()
方法之后,nextPageBean的@PostConstruct
运行,我能够读取使用FacesContext#getRequestParameterMap()
发送的参数,导航无法完成,页面只是刷新
所以我想知道如何将参数发送到另一个页面并使用GET或POST导航到它。