0

私はプロジェクトの再設計の過程にあり、バグと思われるものに出くわしましたが、バグの発生源について混乱しています。

基本的に、私がやろうとしているのは、URL パラメーターをバッキング Bean に渡すことだけです。魔法はなく、これを達成するためのさまざまな方法がたくさんあります。以下は、私が定期的に使用するものです。

  1. Bean を @Named から @ManagedBean に変更してから、@ManagedProperty を使用できます
  2. を使用してパラメーターにアクセスFacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()し、マップから目的のパラメーターを取得できます
  3. または、次を使用できます。<f:metadata><f:viewParam name="id" value="#{backingBean.id}"/></f:metadata>

Glassfish 3+でJSF 2.1を使用している場合、これら3つすべてが完全に機能します。問題は、私の現在のプロジェクトが JSF 2.2 と Glassfish 4 を使用していて、これらのどれも機能しないことです! 私が何をしても、パラメーターは決して設定されず、常に null になります。

これをさらに追跡する方法がわかりません。前回のプロジェクトからの明らかな変更点は、Glassfish 3 の代わりに 4、6 の代わりに JavaEE 7、2.1 の代わりに JSF 2.2 を使用していることです。投稿できるエラーや例外はありません。

私がテストできるもの、または私が試すことができる代替ソリューションは他にありますか? これに失敗すると、これを引き起こす可能性のある報告されたバグまたは変更を知っている人がいます。最後に、誰でもこのエラーを再現できますか?

4

1 に答える 1

4

問題は名前空間に関連しています!

古い名前空間を宣言すると、すべて正常に動作します

xmlns:f="http://java.sun.com/jsf/core"

新しい名前空間を宣言しても機能しません

xmlns://xmlns.jcp.org/jsf/core

netbeans は名前空間を自動的に設定するので注意してください。これが誰かの時間を節約することを本当に願っています!

于 2013-07-19T08:34:07.473 に答える