2016-11-25 11 views
0

私は、モーダルダイアログボックスに、各アドレスタイプの別々のdivに分割されたチェックボックス(Address A、Address B、Other Address)ユーザーが1つのアドレスを選択します。Apache Wicket PanelのTextFieldは、Modalウィンドウを閉じた後に更新されません。

各アドレスタイプには、氏名、ハウスナンバー、ストリート、市区町村、郵便番号、国を示す独自のTextFieldがあります。

これまでのところとても良いです。私はAddressの選択を処理し、テキストフィールド値をモデルに渡すことができました。モデルが選択された住所に反映されています。

モーダルウィンドウ(AjaxLink)の「OK」ボタンをクリックすると、選択したアドレスタイプを表示するサブパネル(別のメインパネルの下に、すべてのアドレスに読み込み専用のテキストフィールドがあります)があります。しかし、それはリフレッシュされていません。しかし、テキストフィールドモデルは更新された値を持っています。パネルなどの新しいインスタンスを作成し、LoadableDetachableModel、setDefaultModel()を使用して、何も使用の私も貼り付けられている

ではありません - :

は、このサイト上のすべてのものを試してみました(私はデバッグの際にこれを発見しました)関連するコード部分はここにあります。間違っていると私はモーダルの「OK」ボタンをクリックするだけでリフレッシュサブパネルのテキストフィールドを取得するために修正する必要がどこにあるのと、ここで私を導くことができる人を要求します。事前に

感謝を

--ShipmentAddressSelectedPanel constructor Code 
    public ShipmentAddressSelectedPanel(String id, IModel<OrderDTO> orderDTOIModel) { 
    super(id, orderDTOIModel); 
    name = orderDTOIModel.getObject().getDeliveryAddress().getName(); 
    streetAddress = subOrderDTOIModel.getObject().getDeliveryAddress().getStreet(); 
    floor = orderDTOIModel.getObject().getDeliveryAddress().getFloor(); 
    postalNumber = orderDTOIModel.getObject().getDeliveryAddress().getZipCode(); 
    city = orderDTOIModel.getObject().getDeliveryAddress().getCity(); 
    add(new TextField<>("name", new LoadableDetachableModel<String>() { 
     @Override 
     protected String load() { 
      return "" + name; 
     } 
    })); 
    add(new TextField<>("streetAddress", new LoadableDetachableModel<String>() { 
     @Override 
     protected String load() { 
      return "" + streetAddress; 
     } 
    })); 
    add(new TextField<>("floor", new LoadableDetachableModel<String>() { 
     @Override 
     protected String load() { 
      return "" + floor; 
     } 
    })); 
    //floor 
    add(new TextField<>("postalNumber", new LoadableDetachableModel<String>() { 
     @Override 
     protected String load() { 
      return "" + postalNumber; 
     } 
    })); 
    //postalNumber 
    add(new TextField<>("city", new LoadableDetachableModel<String>() { 
     @Override 
     protected String load() { 
      return "" + city; 
     } 
    })); 

} 

--code of onClick of AjaxLink ("Ok") button 
add(new AjaxLink("saveAddress") { 
     @Override 
     public void onClick(final AjaxRequestTarget target) { 
      if (addressA.getValue().equals("true")) 
      { 
       onSaveAddress(target, getShipmentAddressModelFromDeliveryAddress(addressAModel.getObject())); 
      } 

--Code of onSaveAddress where the logic refresh Panel is called from the main panel 
@Override 
public void onSaveAddress(AjaxRequestTarget target, ShipmentAddressModel shipmentAddressModel) { 

        ShipmentAddressSelectedPanel newShipmentAddressSelectedPanel = new ShipmentAddressSelectedPanel("showShipmentAddressSelected", orderDTOIModel); 
        newShipmentAddressSelectedPanel.setOutputMarkupId(true); 
        //newShipmentAddressSelectedPanel.setDefaultModelObject(orderDTOIModel); 
        target.add(newShipmentAddressSelectedPanel); 
        showAddressModal.close(target); 
       } 

答えて

0

新しいShipmentAddressSelectedPanelを作成しているが、それはコンポーネントツリーに追加されません 注意をAjaxRequestTargetが現在のページ内でないコンポーネントを、スキップすることをあなたはログエントリを持つ必要があります。。

"Component .. with markupid: .. not rendered because it was already removed from page" 

あなたの使用方法に注意してくださいF LDMが間違っている、それは次のようになります。

//name = orderDTOIModel.getObject().getDeliveryAddress().getName(); 
add(new TextField<>("name", new LoadableDetachableModel<String>() { 
    @Override 
    protected String load() { 
     return orderDTOIModel.getObject().getDeliveryAddress().getName(); 
    } 
})); 

は、そうでない場合は、一度のみ名前を引き出し、モデルが変更されたときに更新することは決してないだろう。

+0

こんにちは、ご意見ありがとうございます。 – user3593025

+0

こんにちは、ご意見ありがとうございます。実際に私は既存のShipmentAddressSelectedPanel refを再利用しようとしました。それでも私はモデル値をリフレッシュするための新しいパネルを作成することができると述べた記事を読んだ。だから、それがそれを置く理由でした。新しいShipmentAddressSelectedPanelを作成するべきでないなら、ここで何をしなければならないかアドバイスしてもらえますか? LDMについて、あなたがアドバイスして知らせる方法をチェックアウトしますか?もう一度ありがとう! – user3593025

+0

こんにちは@svenmeier、あなたのLDMは変更作業を提案..ありがとうトン!どうもありがとうございました。 – user3593025

関連する問題