salut
je suis en stage, je travaille avec Struts et hibernate et j'ai un probleme le chainage de deux actions:
publierEnQualif qui recupere le chemin d'une version de courrier (nom du courrier+n de version.rtf)se trouvant dans un repertoire precis et le copie dans un autre sous le nom (nom du courrier.rtf) et met a jour la base de données mais si le fichier est deja publier en Qualif l'action delegue le travail a une autre publierEnQualifBis apres confirmation de l'administrateur, je vous donne le code que j'ai fait
et l'autre 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 public ActionForward publierEnQualif(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ApplicationException { ActionForward actionForward = null; RechercheCourrierForm courrierForm = (RechercheCourrierForm) form; CriteresRechercheCourrierDto critereCourrierDto = new CriteresRechercheCourrierDto(); List versionTrouve = new ArrayList(); critereCourrierDto = CourrierUtil.createCriteresCourrier( critereCourrierDto, courrierForm); UserBean ub = (UserBean) UserHelper.getUserFromRequest(request); String nomCodier = ub.getSchema(); //recuperer le chemin du repertoire ou sont stockés les modeles de // fusion String nomRepertoireModelFusion = CodierService.getInstance() .recupererCodierParCodeFamilleEtCodeCodier( Constants.FAMILLE_PGN, Constants.PGN_RACFUS) .getChaine1(); //nom des fichiers destinees pour la modification des versions String source = nomRepertoireModelFusion + "\\" + nomCodier + "\\" + Constants.REP_ADMINISTRATION + "\\" + request.getParameter("nom"); source = source.replaceAll(Constants.MODELE_END_WITH, critereCourrierDto.getVersion() + Constants.MODELE_END_WITH); String destination = nomRepertoireModelFusion + "\\" + nomCodier + "\\" + Constants.REP_QUALIFICATION + "\\" + request.getParameter("nom"); HttpSession session = request.getSession(true); //mettre la destination et source dans la session pour les recuperer // dans l'action publierEnQualifBis session.setAttribute("destinationQualif", destination); session.setAttribute("sourceQualif", source); File file = new File(destination); String existe = "non"; PrintWriter sortieForm = response.getWriter(); StringBuffer buff = new StringBuffer(); if (file.exists()) { existe = "oui"; request.setAttribute("existQualif", existe); session.setAttribute("version", critereCourrierDto.getVersion()); } else { critereCourrierDto.setAction("notVersion"); CourrierService.getInstance().copierFichier(destination, source); CourrierService.getInstance().updateListeVersions( critereCourrierDto, true); } actionForward = this.rechercheVersions(mapping, courrierForm, request, response); actionForward = mapping.findForward(Constants.SUCCESS_KEY); return actionForward; }
et le formulaire (extrait):
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 public ActionForward publierEnQualifBis(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ApplicationException { ActionForward actionForward = null; RechercheCourrierForm courrierForm = (RechercheCourrierForm) form; CriteresRechercheCourrierDto critereCourrierDto = new CriteresRechercheCourrierDto(); critereCourrierDto = CourrierUtil.createCriteresCourrier( critereCourrierDto, courrierForm); HttpSession session = request.getSession(true); critereCourrierDto.setVersion(session.getAttribute("version") + ""); CourrierService.getInstance().copierFichier( session.getAttribute("destinationQualif").toString(), session.getAttribute("sourceQualif").toString()); //suppression des deux chemins de fichiers stockés dans la session plus // besoin d'eux session.removeAttribute("destinationQualif"); session.removeAttribute("sourceQualif"); critereCourrierDto.setAction(Constants.CRITERE_NOT_VERSION); CourrierService.getInstance().updateListeVersions(critereCourrierDto, true); actionForward = this.rechercheVersions(mapping, courrierForm, request, response); actionForward = mapping.findForward(Constants.SUCCESS_KEY); return actionForward; }
ca marche mais le chef ne veut pas que la delegation soit avec javascript
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 <logic:present name="existQualif"> <logic:equal name="existQualif" value="oui"> <!--fonction javascript executé si le fichier est déja publié en Qualif <=> existence du fichier dans le repertoire Qualif --> <script language="Javascript"> if (confirm("<bean:message key="MSG-10001"/>")) { document.rechercheCourrierForm.action= '<html:rewrite action="publierEnQualifBis"/>'; document.rechercheCourrierForm.submit(); } </script> </logic:equal> </logic:present>
merci de me repondre c urgent
Partager