我的观点是:
<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:setPropertyActionListener target="#{bookSeatController.flightNumber}"
value="#{flightInfoController.flight.number}" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)
我的二传手是:
public void setFlightNumber(String flightNumber) {
this.flightNumber = flightNumber;
}
Run Code Online (Sandbox Code Playgroud)
当我使用调试器我得到flightNumber的null在二传手.但是,如果我将视图更改为以下内容:
<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:setPropertyActionListener target="#{bookSeatController.flightNumber}"
value="122334" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)
该flightNumber属性设置为122334.这是如何导致的,如何解决它来设置预期值而不是null?
如果#{flightInfoController.flight.number}请求作用域,则flight在处理表单提交的请求期间,它必须保持与在显示表单的请求期间完全相同.这必须发生在bean的(post)构造函数中.
如果这不是一个选项,因为它取决于一些基于请求的变量,那么你最好的办法是将bean放在视图范围内(但我仍然假设你的bean设计得合理,不做任何业务/在吸气剂中预加工).
如果将bean放在视图范围中又不是一个选项,那么您需要将其作为一个完整的请求参数传递.你可以做到这一点<f:param>.
<h:commandLink value="BookFlight" action="#{bookSeatController.doLoginOrCC}">
<f:param name="flightNumber" value="#{flightInfoController.flight.number}" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)
你可以让JSF设置它通过@ManagedProperty在BookSeatController或<f:viewParam>在当前视图.
| 归档时间: |
|
| 查看次数: |
11801 次 |
| 最近记录: |