0
我想在JSF中做一些簡單的事情,但由於某種原因我無法正常工作。 我想要的是發佈帶有GET參數的頁面中的表單信息,並在我提交表單時保存此GET參數。提交表單時請保持參數
<f:metadata>
<f:viewParam name="someId" value="#{someController.something}" converter="#{someConverter}" />
</f:metadata>
這是我選擇綁定GET參數的方式,這在我做GET請求時工作正常。
而在同頁我有一個
<h:form>
<!-- (... various input ...) -->
<h:commandLink action="#{someController.create}" value="Create" />
</h:form>
當我提交它,即使數據是正確的,我從來沒有讓我的「東西」不爲空。
用例很簡單,我有一對多的關係,我想訪問帶有id的「one」作爲GET參數,並在頁面和列表下方列出「many」,表格允許我在「許多」列表中添加一個新元素。
我想使它(當然)工作,並清潔可能,
有人能告訴我什麼是實現這一目標的最佳方式是什麼?
謝謝!
我忘了提及我使用CDI而不是JSF作爲容器,因爲我聽說JSF容器已被棄用。我應該保留我的選擇還是使用ManagedBean?如果我堅持使用CDI,最好的方法是使用@SessionScoped?謝謝 –
已棄用? :)廢話。它們仍然適用於不支持像Tomcat/Jetty /等盒子的CDI的準系統servlet容器。只有當你有一個支持CDI的容器,並且你想在其他Java EE工件(如servlet,過濾器,Web服務,EJB等)中注入託管bean時,CDI確實更容易使用。會話範圍絕對是錯誤的選擇。 CDI提供'@ ConversationScoped'作爲視圖範圍的替代品,但您需要自己開始和結束對話。 – BalusC
在應用程序中同時使用ManagedBean和CDI還是僅使用一個?謝謝你的回答,這是清楚簡潔的,問題解決了! –