【问题标题】:How can I add a textfield dynamically after clicking a button?单击按钮后如何动态添加文本字段?
【发布时间】:2011-04-02 09:10:54
【问题描述】:

谁能在这里指出我正确的方向。我最初想要说 2 个文本字段,然后用户将能够单击“添加”按钮,然后将显示另外 2 个文本字段(这需要是动态的,例如用户可以单击一次或 100 次)

【问题讨论】:

  • 你应该重新标记你的问题,或者至少说出你在说什么编码语言

标签: java button wicket textfield


【解决方案1】:

既然是检票口,它应该是 Java...我会重新标记这个但我的帐户是新的...

将您的初始文本字段模型放入单个包装对象并将其添加到列表(因此仅包含一个元素)并在 ListView 中显示此列表。在您的 Button 的 onClick 事件中,将这些包装对象中的另一个添加到您的列表中并刷新 ListView。

类似

public class TwoTextFields {
    private IModel textFieldOne;
    private IModel textFieldTwo;

    [... constructor, getters setters here  ...]

public class MyPanel extends Panel {

   private List<TwoTextFields> list = new ArrayList<TwoTextFields>();

   public MyPanel(String id) {
       super(id);
       add( New ListView<TwoTextFields>("list", list) {

           @Override
           protected populateItem(Item<TwoTextFields> item) {
               add( new TextField("fieldOne", new PropertyModel(item, "textFieldOne");
               add( new TextField("fieldTwo", new PropertyModel(item, "textFieldTwo");
           }
      });
      add( new Button("button) {

           @Override
           protected void onClick() {
               list.add(new TwoTextFields());
           }
      });
}

我不知道这是否编译...这只是给您一个想法,不想为此启动eclipse...

【讨论】:

  • 这将重新加载页面,而不是通过 Ajax 进行更新,这可能更简洁。不过应该可以工作:)
  • 为什么支持类 TwoTextFields 使用 IModel 的实例作为它的属性,而不仅仅是 String?
  • @jbrookover: 是的,这个例子没有 ajaxified,但因为这只是 wicket 中的样板,而这个例子就是这样,一个例子不是它自己的解决方案,我想,这就足够了
  • @ireddick:两个原因.... b) Wicket 文本字段可以容纳的不仅仅是字符串。通过使用模型,您可以轻松访问 wicket 的转换能力,以将这些字段用于数字等。
  • 感谢提供给我一些好主意的示例代码。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2012-11-09
相关资源
最近更新 更多