Salut,

Je n'arrive pas a pouvoir raffraichir une zone de ma page (La zone contient une image captcha qu'est generee a partir du jar SimpleCaptcha). J'espere que quelqu'un pourra m'aider. Voici mes codes, vous aurez donc un apercu de ce que j'ai fait:

La page jsp ou le captcha s'affiche:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<s:actionmessage />
<s:actionerror />
<s:form action="addProject" validate="true" method="POST">
	<table>
		<tr>
			<td>Project Name :</td>
			<td><s:textfield name="newProject.name" /></td>
		</tr>
		<tr>
			<td><!-- Action à effectuer --> 
			<s:url id="prepareAdd"
				action="prepareAdd">
			</s:url> 
			<sx:div id="captcha_div" listenTopics="/prepareAdd" href="%{prepareAdd}">
				<img id="captcha" src="Captcha.jpg" width="300" height="100" />
			</sx:div><sx:submit name="refresh" type="image" src="image/Refresh_view.jpg"
				targets="captcha_div"></sx:submit></td>
			<td><input type="text" name="captcha" /></td>
		</tr>
		<tr>
			<td colspan="2"><s:submit name="submit" action="addProject"
				value="Add project" /></td>
		</tr>
	</table>
 
</s:form>
</body>
</html>
Le servlet captcha
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
23
24
25
26
27
28
package com.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import nl.captcha.Captcha;
import nl.captcha.servlet.CaptchaServletUtil;
import nl.captcha.servlet.SimpleCaptchaServlet;
 
public class CaptchaServlet extends SimpleCaptchaServlet {
 
	private static final long serialVersionUID = -621179653212023375L;
 
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	        throws ServletException, IOException {
		Captcha captcha = new Captcha.Builder(_width, _height)
        .addText()
        .build();
 
    CaptchaServletUtil.writeImage(resp, captcha.getImage());
 
    req.getSession().setAttribute(Captcha.NAME, captcha);
	}
 
}
La classe action
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.action;
 
import java.util.List;
 
import nl.captcha.Captcha;
 
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipValidation;
 
import com.entity.ProjectEntity;
import com.exception.TechniqueException;
import com.service.PersonService;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.validator.annotations.Validation;
import com.opensymphony.xwork2.validator.annotations.VisitorFieldValidator;
 
@Validation
public class ProjectAction extends BaseAction  implements Preparable {
	/**
         * 
         */
	private static final long serialVersionUID = 5430460063723489974L;
	private List<ProjectEntity> projects;
	private PersonService personService;
	private ProjectEntity newProject;
	private Integer id;
	private String captcha;
	private boolean submit;
	private boolean refresh;
 
	public ProjectAction(PersonService personService) {
		this.personService = personService;
	}
 
	@Override
	public void prepare() throws Exception {
 
	}
	@SkipValidation
	@Action(value="/listProjects", results={ @Result(type="tiles", location="/listProjects.tiles")})
	public String execute() {
		this.setProjects(this.personService.getProjects());
		return SUCCESS;
 
	}
	@SkipValidation
	@Action(value="/prepareAdd", results={ @Result(type="tiles", location="/prepareAdd.tiles")})
	public String prepareAdd() {
		this.setNewProject(new ProjectEntity());
		return SUCCESS;
 
	}
 
 
	@Action(value="/addProject", results={ @Result(name="input", type="tiles", location="/addProject.tiles"),
			@Result(name="prepareAdd", type="tiles", location="/prepareAdd.tiles")})
	public String add() {
		// Check captcha
		Captcha captcha = (Captcha) super.getSession().getAttribute(Captcha.NAME);
		if(captcha.isCorrect(getCaptcha())) {
			System.out.println("captcha ok");
			this.personService.saveProject(newProject);
 
			this.addActionMessage("Un enregistrement effectué");
			newProject = new ProjectEntity();
			return INPUT;
		}else {
			return "prepareAdd";
		}
 
 
 
	}
 
	@SkipValidation
	@Action(value="/removeProject", results={ @Result( type="tiles", location="/listProjects.tiles"),
			@Result(name="redirect", type="redirectAction", location = "listProjects") })
	public String remove() {
		try {
			this.personService.deleteProject(id);
		} catch (TechniqueException e) {
			return ERROR;
		}
 
		return "redirect";
 
	}
 
	public List<ProjectEntity> getProjects() {
		return projects;
	}
 
	public void setProjects(List<ProjectEntity> projects) {
		this.projects = projects;
	}
 
	 // don't provide message, it is supplied by
	 // annotations in Project class
	@VisitorFieldValidator(message="*" )
	public ProjectEntity getNewProject() {
		return newProject;
	}
 
	public void setNewProject(ProjectEntity newProject) {
		this.newProject = newProject;
	}
 
	public Integer getId() {
		return id;
	}
 
	public void setId(Integer id) {
		this.id = id;
	}
 
	public String getCaptcha() {
		return captcha;
	}
 
	public void setCaptcha(String captcha) {
		this.captcha = captcha;
	}
 
	public boolean isSubmit() {
		return submit;
	}
 
	public void setSubmit(boolean submit) {
		this.submit = submit;
	}
 
	public boolean isRefresh() {
		return refresh;
	}
 
	public void setRefresh(boolean refresh) {
		this.refresh = refresh;
	}
 
}
Declaration du captcha dans le web.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<servlet>
		<servlet-name>SimpleCaptcha</servlet-name>
		<servlet-class>com.servlet.CaptchaServlet</servlet-class></servlet>
	<servlet-mapping>
		<servlet-name>SimpleCaptcha</servlet-name>
		<url-pattern>/Captcha.jpg</url-pattern>
	</servlet-mapping>

Je veux raffraichir le captcha lorsque je clique sur le bouton refresh, seulement la zone captcha doit etre raffraichir. Pouvez vous m'aider svp.


Cdt
Neerou