私は次の問題を抱えています:モデルが変更された場合、自作のビデオクラス(パネルを拡張)が更新されません。
これが現在の状態です。ListChoice を持つクラス "A" を取得しました。このクラスは、ListChoice の現在選択されているアイテムを含むモデルを取得するパネル「descrPanel」を作成します。ユーザーが ListChoice で何かを選択すると更新されます (ListChoice は AjaxBehaviour を取得し、target.add(descrPanel) を介して descrPanel を更新します)。
クラスA:
PropertyModel<Exercise> currExerciseModel = new PropertyModel<Exercise>(this,"selectedExercise");
final ExerciseDescriptionPanel descrPanel = new ExerciseDescriptionPanel("descrPanelTag", currExerciseModel);
descrPanel.setOutputMarkupId(true);
Class ExerciseDescriptionPanel に、自作の Video-Class (拡張 Panel) を挿入しました。また、MultiLineLabel を挿入しました:
クラス演習DescriptionPanel
public class ExerciseDescriptionPanel extends Panel {
private IModel<Exercise> model;
private Exercise exercise;
public ExerciseDescriptionPanel(String id, IModel<Exercise> model) {
super(id, model);
this.model = model;
MultiLineLabel mll = new MultiLineLabel("mll", new Model() {
@Override
public String getObject() {
if (ExerciseDescriptionPanel.this.getModel().getObject() != null){
return ExerciseDescriptionPanel.this.getModel().getObject().getDescription();
}
else return "";
}
});
add(mll);
Video video = new Video("myVideo", new Model<Exercise>(){
@Override
public Exercise getObject() {
if (ExerciseDescriptionPanel.this.getModel().getObject() != null){
return ExerciseDescriptionPanel.this.getModel().getObject();
}
else return new Exercise();
}
});
add(video);
}
さて、私が理解していないのは、説明がListChoiceの現在の選択に基づいて更新されている間、Video-Classはそれを無視して「新しいExercise()」を返し続けることです.選択が行われていない場合の ListChoice。
Video-Class も提供します。
クラスビデオ
public class Video extends Panel{
private IModel<Exercise> model;
public Video(String id, IModel<Exercise> model) {
super(id, model);
String src = ((Exercise)model.getObject()).getVideo();
String startPicDest = ((Exercise)model.getObject()).getPicture();
WebMarkupContainer flashSrc = new WebMarkupContainer("flashSrcTag");
flashSrc.add(new AttributeModifier("value", "config={'playlist':['" +
startPicDest +"',{'url':'"+ src +"','autoPlay':false}]}"));
this.add(flashSrc);
setOutputMarkupId(true);
}
}
私は何時間もインターネットを検索してきましたが、何も役に立ちませんでした. この問題の解決策を教えていただければ幸いです。よろしくお願いします。ご挨拶