Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wicket:动态添加文本字段/面板_Java_Wicket - Fatal编程技术网

Java Wicket:动态添加文本字段/面板

Java Wicket:动态添加文本字段/面板,java,wicket,Java,Wicket,我想在表单中动态添加一些TextField,并隐藏或显示一些onClick 我想实现的图像(实际上是德语,所以我解释它): 左边是一周中的几天(周一、周二、周日)。如果您单击箭头指向右侧的按钮,则实际每周应隐藏,并显示下周 我存储了一个表示一个周期的整数。因此,如果在数据库中是一个3,我需要能够点击3次按钮“下周”。(注意:此数字可以动态更改)。所以如果我把数字3改为5,我需要这个表格的5倍 我希望我用“好”来形容它,我的英语不是最好的。对不起 我读到: 首先,我需要一个面板,在其中添加Tex

我想在表单中动态添加一些
TextField
,并隐藏或显示一些onClick

我想实现的图像(实际上是德语,所以我解释它): 左边是一周中的几天(周一、周二、周日)。如果您单击箭头指向右侧的按钮,则实际每周应隐藏,并显示下周

我存储了一个表示一个周期的
整数
。因此,如果在数据库中是一个3,我需要能够点击3次按钮“下周”。(注意:此数字可以动态更改)。所以如果我把数字3改为5,我需要这个表格的5倍

我希望我用“好”来形容它,我的英语不是最好的。对不起

我读到: 首先,我需要一个面板,在其中添加
TextFields
,其次,我需要一个列表视图,它可以获取面板列表。但我不明白这是怎么回事。。这样做对吗

模板:

public class FoodFieldPanel extends Panel {

public FoodFieldPanel(String id) {
    super(id);
    WebMarkupContainer foodFields = new WebMarkupContainer("foodFields");
    TextField monday = new TextField("monday");
    TextField tuesday = new TextField("tuesday");
    TextField wendnesday = new TextField("wendnesday");
    TextField thursday = new TextField("thursday");
    TextField friday = new TextField("friday");
    TextField saturday = new TextField("saturday");
    TextField sunday = new TextField("sunday");
    foodFields.add(monday);
    foodFields.add(tuesday);
    foodFields.add(wendnesday);
    foodFields.add(thursday);
    foodFields.add(friday);
    foodFields.add(saturday);
    foodFields.add(sunday);
    add(foodFields);
} 
}
第页:

公共类FoodDetailPanel扩展面板{
public FoodDetailPanel(字符串id、最终IModel catModel、布尔字段启用){
超级(id,catModel);
setOutputMarkupId(真);
整数周期=4;
List textFields=new ArrayList();

对于(int a=1;a因此,考虑到您的显示是静态的,只有其背后的数据必须更改,您可以利用模型的强大功能。(我无法发布完整的解决方案,它可能太长,但希望它能向您展示总体思路。)

您还需要以类似的方式更改箭头的代码,但基本思想是,通过使用动态模型,您可以在不知道逻辑的情况下替换页面后面的数据,而不需要额外的
ListView
。(虽然我个人会将一周中的几天存储在
列表视图中
,但我不想让我的答案更加复杂。)


这种显示和模型的解耦是Wicket最强大的功能之一。

因此,考虑到您的显示是静态的,只有其背后的数据需要更改,您可以利用模型的强大功能。(我无法发布完整的解决方案,可能会太长,但希望它能向您展示总体思路。)

您还需要以类似的方式更改箭头的代码,但基本思想是,通过使用动态模型,您可以在不知道逻辑的情况下替换页面后面的数据,而不需要额外的
ListView
。(虽然我个人会将一周中的几天存储在
列表视图中
,但我不想让我的答案更加复杂。)


这种显示和模型的解耦是Wicket最强大的功能之一。

因此,考虑到您的显示是静态的,只有其背后的数据需要更改,您可以利用模型的强大功能。(我无法发布完整的解决方案,可能会太长,但希望它能向您展示总体思路。)

您还需要以类似的方式更改箭头的代码,但基本思想是,通过使用动态模型,您可以在不知道逻辑的情况下替换页面后面的数据,而不需要额外的
ListView
。(虽然我个人会将一周中的几天存储在
列表视图中
,但我不想让我的答案更加复杂。)


这种显示和模型的解耦是Wicket最强大的功能之一。

因此,考虑到您的显示是静态的,只有其背后的数据需要更改,您可以利用模型的强大功能。(我无法发布完整的解决方案,可能会太长,但希望它能向您展示总体思路。)

您还需要以类似的方式更改箭头的代码,但基本思想是,通过使用动态模型,您可以在不知道逻辑的情况下替换页面后面的数据,而不需要额外的
ListView
。(虽然我个人会将一周中的几天存储在
列表视图中
,但我不想让我的答案更加复杂。)


这种显示和模型的解耦是Wicket最强大的功能之一。

屏幕布局从未真正改变,任何时候只显示一周,这是对的吗?是的,只有一周准时显示,但文本字段中有不同的字符串,这使得答案简单得多:)每周文本字段中都会出现不同的字符串(这是一个餐厅的菜单卡),因此,稍后我需要加载数据库的字符串并将其放入该字段。我想我明白了你的意思,我不需要多次创建该面板。我只需要相同的表单,只需要在单击时更改日期和字段内容。我说得对吗?我说的对吗,屏幕布局从未真正改变,只有一周是正确的在任何时候都拥有?是的,只有一周的时间,但是文本字段中有不同的字符串,这使得答案更简单:)每个星期文本字段中都有不同的字符串(这是餐厅的菜单卡),因此,稍后我需要加载数据库的字符串并将其放入该字段。我想我明白了你的意思,我不需要多次创建该面板。我只需要相同的表单,只需要在单击时更改日期和字段内容。我说得对吗?我说的对吗,屏幕布局从未真正改变,只有一周是正确的在任何时候都拥有?是的,只有一周的时间,但是文本字段中有不同的字符串,这使得答案更简单:)每个星期文本字段中都有不同的字符串(这是餐厅的菜单卡),所以稍后我需要加载数据库的字符串并将它们放入该字段。我想我明白了你的意思,我不需要多次创建该面板。我只需要相同的表单,只需要更改cli上的日期和字段内容
public class FoodDetailPanel extends Panel {

public FoodDetailPanel(String id, final IModel<Category> catModel, boolean fieldsEnabled) {
    super(id, catModel);
    setOutputMarkupId(true);
    int cycle = 4;
    List<FoodFieldPanel> textFields = new ArrayList<FoodFieldPanel>();
    for (int a = 1; a <= cycle; a++) {
        textFields.add(new FoodFieldPanel("foodField"));
    }
    add(new ListView("test", textFields) {
        protected void populateItem(ListItem item) {
            FoodFieldPanel test = (FoodFieldPanel) item.getModelObject();
            add(test);
        }
    });
}
}
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<span wicket:id="test">
    <div wicket:id="foodField">

    </div>
</span> 
</wicket:panel>
class WeekData {
   private String monday;
   private String tuesday;
   // and so on
}

class AllData {
  private final int minWeek;
  private final int maxWeek;
  private int currentWeek; // this is modified by clicking the arrows

  private Map<Integer, WeekData> weekMap;

  public IModel<WeekData> createDataModel() {
    return new IModel<WeekData>() {
       public WeekData getObject() {
         return weekMap.get( currentWeek );
       }
    }
  }

  public IModel<Integer> createWeekModel() {
    return new IModel<Integer>() {

       public Integer getObject() {
         return currentWeek;
       }
    }
  }

}
public FoodFieldPanel(String id, IModel<AllData> model) {
  super(id);
  WebMarkupContainer foodFields = new WebMarkupContainer("foodFields", new CompoundPropertyModel( model.getObject().createDataModel() ) );
  TextField monday = new TextField("monday");
  TextField tuesday = new TextField("tuesday");
  //...
  foodFields.add(monday);
  foodFields.add(tuesday);
  //
  add(foodFields);
}