gpt4 book ai didi

jsf - f :setPropertyActionListener sets null value instead of intended value

转载 作者:行者123 更新时间:2023-12-02 07:44:21 24 4
gpt4 key购买 nike

我的观点是:

<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:setPropertyActionListener target="#{bookSeatController.flightNumber}"
value="#{flightInfoController.flight.number}" />
</h:commandLink>

我的二传手是:

public void setFlightNumber(String flightNumber) {
this.flightNumber = flightNumber;
}

当我使用调试器时,我在 setter 中得到了 nullflightNumber。但是,如果我将 View 更改为以下内容:

<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:setPropertyActionListener target="#{bookSeatController.flightNumber}"
value="122334" />
</h:commandLink>

flightNumber 属性设置为 122334。这是怎么造成的,我该如何解决它以设置预期值而不是 null

最佳答案

如果#{flightInfoController.flight.number}是请求范围的,那么它必须保留完全相同的 flight在处理表单的请求期间提交,就像在显示表单的请求期间一样。这必须在 bean 的(后)构造函数中发生。

如果这不是一个选项,因为它取决于一些基于请求的变量,那么你最好的选择是将 bean 放在 View 范围内(但是我仍然假设你的 bean 设计得当,它不会这样做getter 中的任何业务/预加载工作)。

如果将 bean 放在 View 范围内又不是一个选项,那么您需要将其作为完全有值(value)的请求参数传递。你可以通过 <f:param> 做到这一点.

<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:param name="flightNumber" value="#{flightInfoController.flight.number}" />
</h:commandLink>

您可以让 JSF 通过 @ManagedProperty 设置它在BookSeatController或通过 <f:viewParam>在当前 View 中。

另见:

关于jsf - f :setPropertyActionListener sets null value instead of intended value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8116382/

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