Comment utiliser RequestContext dans primefaces?
Je suis nouveau sur primefaces. J'ai essayer quelques-uns des exemples dans primeface vitrine
Mais;
Après saveUser
, sur ajax méthode handleComplete(xhr, status, args)
args n'ont pas d'arguments ajouté dans saveUser
méthode.
MODIFIER : j'ai juste ajouté @ManagedBean
annotations parce que je suis en utilisant jsf 2.0
EDIT-2
dans mon pom;
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2</version>
</dependency>
dans mon web.xml
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
dans mon .page xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<script type="text/javascript">
function handleComplete(xhr, status, args) {
if(args.validationFailed) {
alert("Validation Failed");
} else {
alert("Save:" + args.saved);
alert("FirstName: " + args.user.firstname + ", Lastname: " + args.user.lastname);
}
}
</script>
</h:head>
<h:body>
<h:form>
<p:panel id="panel" header="New User">
<h:panelGrid columns="2">
<h:outputLabel for="firstname" value="Firstname: *" />
<p:inputText id="firstname" value="#{user.firstName}" required="true"/>
<h:outputLabel for="surname" value="Lastname: *" />
<p:inputText id="surname" value="#{user.surName}" required="true"/>
</h:panelGrid>
</p:panel>
<p:commandButton value="Save" actionListener="#{user.saveUser}" oncomplete="handleComplete(xhr, status, args)" />
</h:form>
</h:body>
</html>
dans ma fève;
@ManagedBean(name = "user")
public class User {
private String firstName = "";
private String surName = "";
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setSurName(String surName) {
this.surName = surName;
}
public String getSurName() {
return surName;
}
public void saveUser(ActionEvent actionEvent) {
//save user
RequestContext context = RequestContext.getCurrentInstance();
context.addCallbackParam("saved", true);
context.addCallbackParam("user", this);
}
}
MODIFIER -3
Je peux attraper les propriétés réalisées avec des données en ajax réponse avec this.PrimeFaces.ajax.RequestManager.requests[0].data
il transporte des données ;
"j_id2059540600_7ac21836=j_id2059540600_7ac21836&j_id2059540600_7ac21836%3Afirstname=qweq&j_id2059540600_7ac21836%3Asurname=asda&javax.faces.ViewState=8900392402396831372%3A-8139730777939772917&javax.faces.partial.ajax=true&javax.faces.source=j_id2059540600_7ac21836:j_id2059540600_7ac218a5&javax.faces.partial.execute=@all&j_id2059540600_7ac21836:j_id2059540600_7ac218a5=j_id2059540600_7ac21836:j_id2059540600_7ac218a5"
Mais je suis assez sûr qu'il y en est une autre option. Juste ne peut pas seet il.
Merci pour toute aide.
- Il sera plus facile de vous aider si vous modifiez votre question à inclure de code suivant: (a) la
<p:ajax>
élément et de son élément parent de votre Facelets page, et (b) votre action méthode d'écouteur de votre managed bean. - je peux les poster ici, mais rien de plus que dans ma réf.
- toute réponse....?
- Ce qui sont que vous essayez d'accomplir exactement avec l'appel de handleComplete? Ce
args
attendez-vous à être automatiquement transmis comme argument? Rappelez-vous JSF a son propre construit dans la validation et l'action#{user.saveUser}
ne sera pas appelé si la validation échoue sur le côté serveur. Je pense que vous avez fait ce plus compliqué que cela doit l'être. - merci pour la réponse. Je suis juste de jouer avec des composants pour l'instant. Je m'attends à voir du côté client que désiré/créé haricots propriétés, vous attendez pas à voir si il y a une validation sur l'action ou pas.
Vous devez vous connecter pour publier un commentaire.
Résolu! C'était au sujet de la portée du problème d'un formulaire qui contient un bouton de commande. Boutons de commande (je pense..na pas lire un document officiel à ce sujet.) que dans une forme a une étendue de sa propre forme. Cant atteindre/mettre à jour/modifier des éléments dans un formulaire.
formid:elementid
. La Javadoc de lafindComponent()
méthode rend plus claire que je peux concernant la syntaxe de l'élément d'id: download.oracle.com/docs/cd/E17802_01/j2ee/javaee/...