我遇到了以下问题:如果模型更改,我的自制视频课程(扩展面板)不会更新。
这就是当前状态:我得到了一个带有 ListChoice 的“A”类。此类创建面板“descrPanel”,该面板获取一个模型,其中包含 ListChoice 的当前选定项。当用户在 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(扩展面板)。我还插入了一个 MultiLineLabel:
课堂练习描述面板
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 的当前选择更新的,但视频类只是忽略它并不断返回“新练习()”,这应该只在第一次加载时返回ListChoice,当没有进行选择时。
我还为您提供视频课程:
课堂视频
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);
}
}
我已经在互联网上搜索了几个小时,但没有找到任何有用的东西。希望你们能给我一些解决这个问题的方法。对此表示感谢。问候