我正在尝试将id(long)从one.xhtml传递到另一个.xhtml。
这两个支持bean都是@ViewScoped
,我试图在它们之间共享长ID。
我收到<f:viewParam/>
com.sun.faces.mgbean.ManagedBeanCreationException
:无法创建 托管豆销售订单。发现了以下问题: - 表达式#{param.foo}
,request引用的对象的范围比引用的托管bean(saleOrder
)范围短。
我有以下代码。
@ManagedBean
public class InvoiceView{
private long number;
// setter getter.
}
@ManagedBean
@ViewScoped
public SearchInvoice{
private List<InvoiceView> views;
private InvoiceView selectedView; // this is coming from <p:dataTable>
}
@ManagedBean
@ViewScoped
public class SaleOrder {
@ManagedProperty("#{param.foo}")
private String number;
@PostConstruct
public void init(){
//sysout number;
}
}
我在searchInvoice.xhtml
文件中有以下代码。
<!-- I have not desclared <f:metadata/> -->
<h:commandButton value="Place Sale Order"
action="#{searchInvoice.forwardToSaleOrder}" <!-- this return saleOrder.xhtml string -->
rendered="#{not empty searchInvoice.views}">
<f:viewParam name="foo" value="#{searchInvoice.selectedView.number}" />
</h:commandButton>