私は、モーダルダイアログボックスに、各アドレスタイプの別々の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);
}
こんにちは、ご意見ありがとうございます。 – user3593025
こんにちは、ご意見ありがとうございます。実際に私は既存のShipmentAddressSelectedPanel refを再利用しようとしました。それでも私はモデル値をリフレッシュするための新しいパネルを作成することができると述べた記事を読んだ。だから、それがそれを置く理由でした。新しいShipmentAddressSelectedPanelを作成するべきでないなら、ここで何をしなければならないかアドバイスしてもらえますか? LDMについて、あなたがアドバイスして知らせる方法をチェックアウトしますか?もう一度ありがとう! – user3593025
こんにちは@svenmeier、あなたのLDMは変更作業を提案..ありがとうトン!どうもありがとうございました。 – user3593025