Salut,
Je m'inspire de sources qui fonctionnent, mais moi quand je l'utilise pour mes tests, ça ne fonctionne pas.
Je veux, pour tester, mettre à jour une image dessinée sur un Graphics2D, soit lorsque l'on déplace un slider, soit lorsque l'on clique sur un bouton.
Voici un bout de ma jsp :
Voici PaintBean.java:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <h:form> <rich:inputNumberSlider showInput="false" showBoundaryValues="true" showToolTip="false" value="#{paintData.radius}" step="1" minValue="10" maxValue="50"> <a4j:support event="onchange" reRender="painter" /> <f:convertNumber /> </rich:inputNumberSlider> </h:form> <a4j:commandLink styleClass="button" rendered="true" value="refresh" action="#{paintData.random}" reRender="painter" /> <rich:paint2D id="painter" width="300" height="300" format="png" data="#{paintData}" paint="#{paintBean.paint}" />
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 import java.awt.Color; import java.awt.Graphics2D; public class PaintBean { public void paint(Graphics2D g, Object obj) { System.out.println("********** PAINT ************"); g.setColor(Color.RED); PaintData data = (PaintData) obj; g.fillOval(100, 100, data.getRadius(), data.getRadius()); } }La méthode paint() est bien appelée lors du chargement de la page, mais quand je clique sur le bouton ou que je déplace le slider, elle n'est pas réappelée...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.Serializable; import java.util.Random; public class PaintData implements Serializable { private static final Random RANDOM = new Random(); private int radius = 15; public int getRadius() { return radius; } public void setRadius(int radius) { this.radius = radius; } public void random() { setRadius(RANDOM.nextInt(40) + 10); } }
Comment faire cela?
Merci de votre aide, je débute en JSF
PS: comme valeur de reRender, j'ai écrit "painter", mais j'ai vu parfois ":painter" (avec un ':' devant), dans les deux cas ça ne marche pas pour moi...
Partager