gpt4 book ai didi

jsf - 在 Primefaces JSF2.x 中使用请求范围的托管 bean

转载 作者:行者123 更新时间:2023-12-04 05:15:28 33 4
gpt4 key购买 nike

JSF + Primefaces 新手。 (使用 JSF 2.1,Primefaces 3.4.2)

我有一个具有内部 panelGroup 的表单,它使用 Primefaces commandButton 来获取数据以填充各种表单组件。 partialSubmit 解决了尚未填充的字段的验证问题,因此效果很好。该页面按预期运行,但现在我正在尝试将实现调整为“更干净”。

我的问题与我用于表单使用的支持 bean 的 JSF 范围有关。使用 session 范围,一切都很好,但在使用请求范围时则不然。我的理解是,“最终”提交(通过另一个 p:commandButton 组件)和这个 fetch 按钮都在调用提交,以便对其中任何一个的响应构成请求生命周期的完成。如果我是对的,它解释了为什么我得到(使用 requst 范围)以下内容:
java.lang.IllegalStateException:提交响应后无法创建 session

使用 fetch 按钮时。

但很明显,这“打破”了我的意图,即获取请求仅导致表单通过 bean 使用更新的数据。

那么,我的理解是否正确,任何使用中间提交(通过 partialSubmit="true"命令按钮(默认情况下启用 ajax 行为)的设计模式都需要使用至少 session 范围的支持 bean?
理想情况下,实现请求与导航级别请求的机制将允许在 1 个请求的上下文中完成这些中间提交。
或者我需要做一些额外的研究吗? (获得一本 JSF 2.x 书籍而不是使用我的 1.2 副本?)
MTIA 的任何反馈。

我的获取组件:

<p:commandButton id="returningBtn" partialSubmit="true" value="Hit if returning" 
process="nameInfo" actionListener="#{player.loadReturning}" update="registrationForm">
<p:resetInput target="registrationForm" />
</p:commandButton>

我的最终提交:
<p:commandButton tabindex="0" id="SubmitButton" value="Register"
action="#{player.register}" update="regPage"/>

最佳答案

The partialSubmit gets around the validation issues of fields not yet populated so that works well.



不,它不会那样做。它只发送 process 中指定的输入字段属性到服务器而不是当前表单的所有输入字段。正是 process指示需要处理哪些输入(转换、验证和更新)的属性。 partialSubmit="true"仅仅减少了网络带宽和请求参数解析开销。另见 PrimeFaces blog on the subject .

The page functions as intended but now I'm trying to tweak the implementation to be be 'cleaner'. My question pertains to the JSF scoping I'm using for the backing bean the form is using. Using session scope, all is well but not when using request scoping.



session 范围确实是表单的错误范围。您需要请求或 View 范围。如果您的表单有某种状态需要在同一表单上的后续提交中记住,那么您需要 View 范围。另见 How to choose the right bean scope?

java.lang.IllegalStateException: Cannot create a session after the response has been committed



这被认为是 Mojarra 中的一个错误,已在 2.1.8 中修复。另见 Adding <h:form> causes java.lang.IllegalStateException: Cannot create a session after the response has been committed如果您无法升级,有几种解决方法。

So, am I correct in my understanding that any design pattern that has the use of an intermediate submission (via the partialSubmit="true" commandButton (ajax behavior is enabled by default) will require the use of at least session scoped backing beans? Ideally, a mechanism for having an implementation request versus a navigation level request would allow for these intermediate submits to be done within the context of 1 request.



如上所述,您需要 View 范围。

Or do I need to do some additional research? (get a JSF 2.x book rather than use my 1.2 copy?)



肯定的。不仅是自 JSF2 以来 View 范围是新的,而且与 JSF1 相比,JSF2 中的很多很多其他事情都做了不同的事情(阅读:更优雅)。您可以在 our JSF wiki page 底部找到几个指向健全的 JSF2 资源的链接。 .

关于jsf - 在 Primefaces JSF2.x 中使用请求范围的托管 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339298/

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