J'ai commandLink
avec un actionListener
qui appelle une méthode pour modifier la valeur de text
. Le même commandLink
a un action
qui recharge la page. Lorsque je clique sur le commandLink
, le actionListener
est appelé. Mais le action
seulement est terminé - en affichant la valeur mise à jour du texte - lorsque je rafraîchis le navigateur. Pourquoi le outputText
n'est pas mis à jour automatiquement?page ne pas actualiser après une action est appelée
Certains code: home.jspx
(...)
<f:view>
<table id="main_table">
<tr><td width="160px"><jsp:directive.include file="./logo.jspx" /></td>
<td><jsp:directive.include file="./header.jspx" /></td></tr>
<tr><td width="160px"><jsp:directive.include file="./vertical_navigation.jspx" /></td>
<td align="center"><ice:outputText value="main" /></ice:outputText></td></tr>
</table>
</f:view>
(...)
customer.jspx est le même, mais la valeur de la outputText
est #{customer.text}
vertical_navigation.jspx: de nombreux liens de commande comme celle-ci :
(...)
<ice:form id="nav_form"><ice:panelGrid columns="1">
<ice:panelCollapsible expanded="true">
<f:facet name="header"><ice:panelGroup>
<ice:outputText value="Customer" />
</ice:panelGroup></f:facet>
<ice:panelGrid columns="1">
<ice:commandLink actionListener="#{client.defineText}"
immediate="true" action="customer" id="list">
<ice:outputText value="List" />
</ice:commandLink>
(...)
le haricot:
(...)
public String text;
public void defineText(ActionEvent evt) {
text = ... some text related to the link
}
public String getText() {
return text;
}
Eh bien, tout fonctionne très bien, sauf que je dois rafraîchir la page lorsque je clique sur un lien pour que la valeur de text
est mis à jour. J'ai mis quelques saturations System.out.println()
dans les méthodes du bean et j'ai remarqué que la méthode defineText
est appelée chaque fois que je clique sur un lien. Mais le getText
est appelé seulement après un rafraîchissement. La sortie est comme ceci:
// click the link "list"
called defineText for link list
// click the link "new"
called defineText for link new
// click the link "external"
called defineText for link external
// refresh the broswer
called getText // this will show the updated value of "text" for the link "external"
// click the link "new"
// refresh the broswer
called defineText for link new
called getText // this will show the updated value of "text" for the link "new"
Je travaille avec JSF 1.2 et Icefaces 1.8.2.
Je l'ai déjà essayé. La méthode getText est appelée (la page est rafraichie, bonne) mais la méthode defineText n'est plus appelée, ce qui signifie que l'actionListener ne fonctionne pas - mauvais. :-( –