I am using an AjaxSubmitLink to submit form data. Using this, however,
is preventing feedback messages from being displayed.
My code is as follows:
public class InitiateDeclarationPage extends EzdecBaseWebPage {
@SpringBean
private IDeclarationService declarationService;
AjaxFallbackLink reenterPinLink;
public InitiateDeclarationPage() {
final Declaration declaration = new
Declaration(EzdecSession.getCurrentUser().getAccount(),
EzdecSession.getCurrentUser(), "", County.COOK,
State.ILLINOIS);
// final FeedbackPanel feedback = new FeedbackPanel("feedback");
// feedback.setOutputMarkupId(true);
// add(feedback);
add(new FeedbackPanel("feedback"));
final Form form = new Form("initiateDeclarationForm", new
CompoundPropertyModel<Declaration>(declaration));
form.add(new Button("submitButton") {
@Override
public void onSubmit() {
Declaration declaration = (Declaration)
form.getModelObject();
declaration.setStatus(Status.OPEN);
ParcelIdentification pin =
declarationService.findParcelIdentification(declaration.getPin());
if (pin == null) {
error("No PIN found for PIN " +
getFormattedPIN(declaration.getPin()));
} else {
if
(declarationService.initiateDeclaration(declaration)) {
EzdecSession.get().info("Declaration " +
declaration.getTxNumber() + " created");
setResponsePage(new
DeclarationPage(declaration, 0, pin));
} else {
error("Creating declaration with PIN: " +
declaration.getPin());
}
}
}
});
final PINTextField pinText = new PINTextField("pin");
pinText.setRequired(true);
pinText.setOutputMarkupId(true);
form.add(pinText);
form.add(new DropDownChoice("county",
Arrays.asList(County.values()))
.setRequired(true)
.setEnabled(false));
final WebMarkupContainer parent = new
WebMarkupContainer("verifyPanelWmc");
parent.setOutputMarkupPlaceholderTag(true);
parent.setVisible(false);
form.add(parent);
final AjaxSubmitLink verifyPinLink = new
AjaxSubmitLink("verifyPinLink") {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
Declaration declaration = (Declaration)
form.getModelObject();
ParcelIdentification pid =
declarationService.findParcelIdentification(declaration.getPin());
if (pid == null) {
error("No PIN found for PIN " +
declaration.getPin());
} else {
InitiateDeclarationVerifyPanel decVerifyPanel =
new InitiateDeclarationVerifyPanel("verifyPanel", pid);
parent.addOrReplace(decVerifyPanel);
parent.setVisible(true);
this.setEnabled(false);
reenterPinLink.setVisible(true);
target.addComponent(this);
target.addComponent(parent);
target.addComponent(reenterPinLink);
}
}
};
form.add(verifyPinLink);
reenterPinLink = new AjaxFallbackLink("reenterPinLink") {
@Override
public void onClick(AjaxRequestTarget target) {
this.setOutputMarkupPlaceholderTag(true);
parent.setVisible(false);
verifyPinLink.setEnabled(true);
target.addComponent(parent);
target.addComponent(verifyPinLink);
target.addComponent(pinText);
target.focusComponent(pinText);
this.setVisible(false);
target.addComponent(this);
}
};
form.add(reenterPinLink);
add(form);
}
}
Does anyone know how to fix this?