diff options
author | Trumeet <17158086+Trumeet@users.noreply.github.com> | 2021-01-09 13:35:46 -0800 |
---|---|---|
committer | Trumeet <17158086+Trumeet@users.noreply.github.com> | 2021-01-09 13:35:51 -0800 |
commit | fbff51c02a77f3526ff809863f8df56025e19e08 (patch) | |
tree | daf208b21d393de458f78cee667f645828551dc6 | |
parent | 96e1b8efc8d29cd815e8f6fb421337e7e0c1d2e1 (diff) | |
download | dn42peering-fbff51c02a77f3526ff809863f8df56025e19e08.tar dn42peering-fbff51c02a77f3526ff809863f8df56025e19e08.tar.gz dn42peering-fbff51c02a77f3526ff809863f8df56025e19e08.tar.bz2 dn42peering-fbff51c02a77f3526ff809863f8df56025e19e08.zip |
fix(central): manually set ID for rendering when editing a peer and the parsing process fails
-rw-r--r-- | central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java index a0ef17f..d00ccfa 100644 --- a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java +++ b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java @@ -367,11 +367,19 @@ public class ManageHandler implements ISubRouter { if (err instanceof HTTPException) { ctx.response().setStatusCode(((HTTPException) err).code).end(); } else if (err instanceof FormException) { + final Peer peer = (Peer) ((FormException) err).data; + if(peer != null) { + // The exception may be generated from parseForm + // In this case, the peer contains default data (like ID, keys, asn) + // ID is the most important one since it determines the action of the form + // so we need to manually ensure it here. + peer.setId(Integer.parseInt(id)); // It must work. + } renderForm(engine, nodeService, false, asn, - (Peer) ((FormException) err).data, + peer, Arrays.asList(((FormException) err).errors), res -> { if (res.succeeded()) { |