Created
January 29, 2018 04:23
-
-
Save tomrlh/7351ada681c3ad3059c694ed888739c5 to your computer and use it in GitHub Desktop.
Displaying FeedbackMessages dynamically in Wicket
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html xmlns:wicket="http://wicket.apache.org"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> | |
<title>Template</title> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"/> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css"/> | |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic"/> | |
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> | |
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/css/AdminLTE.min.css"/> | |
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.2/css/skins/_all-skins.min.css"/> | |
</head> | |
<body class="hold-transition skin-green layout-top-nav"> | |
<div class="content-wrapper"> | |
<section class="content-header"> | |
<h1>FeedbackMessage Handler <small>Example with Apache Wicket</small></h1> | |
</section> | |
<section class="content"> | |
<div class="row"> | |
<div class="col-md-12"> | |
<div class="box box-success"> | |
<div class="box-body"> | |
<wicket:enclosure> | |
<div class="alert alert-success alert-dismissible"> | |
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> | |
<h4><i class="icon fa fa-check"></i> Bingo, form submitted!</h4> | |
<div wicket:id="successMessages"></div> | |
</div> | |
</wicket:enclosure> | |
<wicket:enclosure> | |
<div class="alert alert-danger alert-dismissible"> | |
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> | |
<h4><i class="icon fa fa-ban"></i> Error on form validation!</h4> | |
<div wicket:id="errorMessages"></div> | |
</div> | |
</wicket:enclosure> | |
<form wicket:id="SimpleForm" class="form-horizontal"> | |
<div class="form-group"> | |
<label class="col-sm-2 control-label">Your name</label> | |
<div class="col-sm-10"> | |
<input wicket:id="name" type="text" class="form-control"> | |
</div> | |
</div> | |
<div class="box-footer col-md-12"> | |
<button type="submit" class="btn bg-gray pull-right"><i class="fa fa-check"></i> Submit</button> | |
</div> | |
</form> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
</div> | |
<script src="http://code.jquery.com/jquery-3.3.1.min.js"></script> | |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.apache.wicket.feedback.ErrorLevelFeedbackMessageFilter; | |
import org.apache.wicket.feedback.FeedbackCollector; | |
import org.apache.wicket.feedback.FeedbackMessage; | |
import org.apache.wicket.feedback.IFeedbackMessageFilter; | |
import org.apache.wicket.markup.html.WebPage; | |
import org.apache.wicket.markup.html.form.Form; | |
import org.apache.wicket.markup.html.form.TextField; | |
import org.apache.wicket.markup.html.panel.FeedbackPanel; | |
import org.apache.wicket.model.Model; | |
/** | |
* | |
* @author tomurlh | |
*/ | |
public class FormMessagesHandlerExample extends WebPage { | |
public FormMessagesHandlerExample() { | |
FeedbackCollector collector = new FeedbackCollector(this); | |
ExactErrorLevelFilter successFilter = new ExactErrorLevelFilter(FeedbackMessage.SUCCESS); | |
ExactErrorLevelFilter errorFilter = new ExactErrorLevelFilter(FeedbackMessage.ERROR); | |
add(new SimpleForm("SimpleForm")); | |
add(new FeedbackPanel("successMessages", successFilter) { | |
@Override public boolean isVisible() { | |
return !collector.collect(successFilter).isEmpty(); | |
} | |
}); | |
add(new FeedbackPanel("errorMessages", errorFilter) { | |
@Override public boolean isVisible() { | |
return !collector.collect(errorFilter).isEmpty(); | |
} | |
}); | |
} | |
class SimpleForm extends Form { | |
public SimpleForm(String id) { | |
super(id); | |
add(new TextField("name", Model.of("")).setRequired(true)); | |
} | |
@Override | |
protected void onSubmit() { | |
success("Your name is: " + getPage().get("SimpleForm:name").getDefaultModelObject()); | |
} | |
} | |
class ExactErrorLevelFilter implements IFeedbackMessageFilter { | |
private int errorLevel; | |
public ExactErrorLevelFilter(int errorLevel) { | |
this.errorLevel = errorLevel; | |
} | |
public boolean accept(FeedbackMessage message) { | |
return message.getLevel() == errorLevel; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment