Request Context
RequestContext is a feature with various handy utilities.
- Update component(s) programmatically.
- Execute javascript from beans.
- Add ajax callback parameters.
- ScrollTo a specific component after ajax update.
RequestContext is a feature with various handy utilities.
<h:form>
<p:panel id="panel" header="New User">
<p:messages />
<h:panelGrid columns="2">
<h:outputLabel for="firstname" value="Firstname: *" />
<p:inputText id="firstname" value="#{userController.user.firstname}" required="true"/>
<h:outputLabel for="surname" value="Lastname: *" />
<p:inputText id="surname" value="#{userController.user.lastname}" required="true"/>
</h:panelGrid>
</p:panel>
<p:commandButton value="Save" actionListener="#{userController.saveUser}" oncomplete="handleComplete(xhr, status, args)" />
<p:log />
</h:form>
<script type="text/javascript">
function handleComplete(xhr, status, args) {
if(args.validationFailed) {
PrimeFaces.debug("Validation Failed");
}
else {
PrimeFaces.debug("Save:" + args.saved);
PrimeFaces.debug("FirstName: " + args.user.firstname + ", Lastname: " + args.user.lastname);
}
}
</script>
package org.primefaces.examples.view;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.context.RequestContext;
import org.primefaces.examples.domain.User;
public class UserController {
private User user = new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void saveUser(ActionEvent actionEvent) {
RequestContext context = RequestContext.getCurrentInstance();
context.addCallbackParam("saved", true); //basic parameter
context.addCallbackParam("user", user); //pojo as json
//execute javascript oncomplete
context.execute("PrimeFaces.info('Hello from the Backing Bean');");
//update panel
context.update("form:panel");
//scroll to panel
context.scrollTo("form:panel")
//add facesmessage
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Success", "Success"));
}
}
Running PrimeFaces-4.0-SNAPSHOT on Mojarra-2.1.22
