gpt4 book ai didi

jsf - 如何在 JSF 中将对象从一个页面传递到另一个页面而不编写转换器

转载 作者:行者123 更新时间:2023-12-01 22:32:14 24 4
gpt4 key购买 nike

首先对我的英语感到抱歉。我在 JSF2 中有两个页面,一个用于列出乘客,另一个用于创建/更新乘客。我还有两个 @ViewScoped bean,一个包含乘客列表,另一个用于在 pageB 中保留所选乘客。我看到了通过 viewParam 或 @ManagedProperty 传递乘客的方法,但我不想编写转换器。

我想知道是否有一种方法可以将对象从 pageA 传递到 pageB,而不传递乘客的 id 并编写转换器,或者不传递 id,然后转到数据库检索乘客。我所做的和工作如下。我通过 setPropertyActionListener 在 flash 作用域中设置所选对象并导航到 pageB,在 viewScopedBean 的 @PostConstruct 中,我获取 flashScope 并检索对象。正如我所说,这有效,但我不知道它是否正确。这是代码页A:

<p:column width="10" style="text-align: center;">                    
<p:commandButton icon="ui-icon-pencil" action="editClientes?faces-redirect=true">
<f:setPropertyActionListener target="#{flash.pax}" value="#{row}"/>
</p:commandButton>
</p:column>

pageB bean 的@PostConstruct

@PostConstruct
private void initBean(){
this.pax = (Passenger) JSFUtils.getFlashScope().get("pax");
if(this.pax == null){
this.pax = new Passenger();
}
}

这是正确的,还是正确的方法是编写转换器?谢谢。

最佳答案

取决于您是否希望 /editClientes 请求为 idempotent (“可加入书签”)或不。

闪存方法不是幂等的。无法链接/共享/添加书签 /editClientes URL 来编辑特定客户端。当最终用户复制此 URL 进行共享/添加书签并重新执行请求时(即使只是在浏览器地址栏中按 [enter]),最终用户将面临的只是一个新客户端的空编辑表单,而不是最终用户最初通过闪存范围选择的一个。

请求参数方法是幂等的。每次最终用户重新执行请求时,最终用户都能够获得完全相同相同的响应。

我们不决定您的 /editClientes 页面是否应该幂等。是你的了。

另请参阅:

关于jsf - 如何在 JSF 中将对象从一个页面传递到另一个页面而不编写转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467864/

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