を保存しません。 initメソッドは、私は、リクエストパラメータを取得し、必要なオブジェクトを塗りつぶす:viewscoped Beanが、私は、製品の選択アクションで私は、パラメータを渡して、製品情報ページにリダイレクト、そこから製品情報とデータテーブルとのページを持っているセッションパラメータ
私productInfo.xhtmlで@ManagedBean
@ViewScoped
public class ProductInfo implements Serializable {
private Product p;
private Integer prId;
@PostConstruct
private void init() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
if (request.getParameter("prId") != null) {
prId = Integer.parseInt(request.getParameter("prId"));
p = pf.find(prId);
私は、製品情報の表示や製品情報を編集するためのダイアログを持っていますが、私は私のリクエストパラメータがnullの提出を押したとき:
<p:commandButton styleClass="button-edit" value="Submit" actionListener="#{productInfo.saveProduct()}" update="prodInfo" oncomplete="dlg.hide();"/>
私はprimefaces要素でjsf 2.0を使用しています。
誰でも手伝ってもらえますか?ありがとうございました。
ありがとうございました。そうですが、パラメータでもオブジェクトが再作成され、変更を保存できませんでした。私は別のアプローチを使用し、私のbeanのセッションをコピーし、リストページでプロダクトインフォページにリダイレクトする前にセッションオブジェクトFacesContext.getCurrentInstance()。getExternalContext()。getSessionMap()。remove( "productInfo"); ...他のsugestionsについては動作させるための唯一の方法...なぜ私のビュースコープのBeanはajaxリクエストで再構築されるのか分かりません...そして私はpostconstructを使って、ビュー – Questionmark
「無関係」メモを読んでください。ビューのスコープ付きBeanは再作成しないでください。これは ''です。詳細な解説/解決策/例は、リンクの後ろにあります。セッションスコープの使用は解決策ではなく、ハック/回避策です。 –
BalusC
私は記事全体を読んで、コードの一部を改善するのに役立ちました。私はp:datatableとp:ajaxリクエストをselectリダイレクトで使用しています。これがリダイレクトできる唯一の方法です。リダイレクトした後、私のproductListビュースコープBeanが再構築された後は理解できません。少し遅いです。また、私はテンプレートを使用する必要があるので、テンプレートをxhtmlsに含めるためにを使用し、コンテンツ部分にはを使用しています。これは私が本当に望んでいる最初のJSFアプリケーションです。ご助力ありがとうございます。 –
Questionmark