簡體   English   中英

從支持bean設置參數

[英]Setting a parameter from a backing bean

我正在使用JSF構建一個CRUD Web應用程序,並制作了一個添加表單來創建一個新實體,該實體將持久保存到數據庫中。 成功保存后,我希望用戶導航到將顯示新創建實體的詳細信息的頁面。

更詳細地說,我不想做的是創建一個導航規則,在成功保存后,用戶將導航到“ dilutionDetail.xhtml”。 我使用“ faces-navigation.xml”來做。 這部分工作正常。

我的問題是我需要傳遞一個參數,該參數允許我獲取新創建的實體的ID。 波紋管是添加形式中的commandButton。

<p:commandButton value="Save" action="#{dilution.save()}">
    <f:actionListener binding="#{dilution.prepareForSave()}" />
</p:commandButton>

當調用dilution.save()時,該實體將保持dilution.save()成功后還將返回“保存”以用於導航情況)。 dilution是視圖范圍的托管bean。

保存看起來像這樣:

public String save(){
    das.create(dilution);

    return "saved";
}

das.create(dilution)后, dilution實體將具有我要傳遞的id作為參數。 我怎樣才能做到這一點?

您需要使用自己的@ViewScoped托管bean支持您的“ dilutionDetail.xhtml”。 使它接收一個view參數,該參數將是您要加載的稀釋ID:

<f:metadata>
    <f:viewParam name="id" value="#{dilutionDetailBean.id}" />
    <f:event type="preRenderView" listener="#{dilutionDetailBean.loadDilution}"/>
</f:metadata>

通過此代碼,您將獲得所需的ID集,隨后,您可以使用loadDilution方法從數據庫中加載它。

現在,保存時如何導航到它? 只需使用隱式導航即可。

Integer id = das.create(dilution);
return "dilutionDetail?id="+id;

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM