0

私はリクエストスコープのCDI管理Beanを持っています(jsf管理Beanでも試しましたが、同じ問題です!):

@Named
@RequestScoped
public class myController{

private HashMap<String, MyModel> modelMap;

@PostConstruct
private void init() {
  logModelMap = new HashMap<String, MyModel>();
  logModelMap.put("CONSTANT_1", new MyModel());
  logModelMap.put("CONSTANT_2", new MyModel());
  logModelMap.put("CONSTANT_4", new MyModel());
}
public HashMap getModelMap() {
   return logModelMap;
}
}

そして、単純な pojo である MyModel クラス:

public class MyModel{

private String type = "";
private Date date;

//constructor, getter and setter methods
}

私はjsfを使用して複合コンポーネントを作成し、フィールドをテキストボックスとカレンダーにバインドし、ハッシュマップ内のフィールドにアクセスしていくつかの値を設定したい:

#{myController.modelMap['CONSTANST_1'].type}
#{myController.modelMap['CONSTANST_1'].date}

#{myController.modelMap['CONSTANST_2'].type}
#{myController.modelMap['CONSTANST_2'].date}

#{myController.modelMap['CONSTANST_3'].type}
#{myController.modelMap['CONSTANST_3'].date}

ただし、constant_1 の最初の 2 行だけが機能し、他の 2 つの定数の type と date は null です。値がサーバーに適切に送信されるが、マップ内のフィールドが設定されていないことを firebug で確認しました。ちなみに、私はajaxでprimefacesコマンドボタンを使用してサーバーにデータを送信しています。

4

1 に答える 1

1

最後に、問題がどこにあるのかわかりました。ネストされたフォームがありました!!! 複合コンポーネントをラップする 1 つのフォームと、複合コンポーネントを使用する 1 つのフォームです。

于 2012-06-10T11:28:17.123 に答える