problème session et request
Salut est ce que qqun peut m'eclaircir la difference exacte entre request et session (meme si cest evident) car j'ai le problème suivant:
je reprends le code existant d'une personne qui utilise l e code suivant :
dans lequel en utilisant request j'arrive pas a afficher grand chose dans la page alors qu'n utilisant session j'arrive à afficher les resultats sur la page .
je suis debutante en struts et je vois pas trop !
Merci
Code:
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
|
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (logger.isDebugEnabled()) {
logger.debug("perform : start");
}
/* check expired session */
ActionForward forward = super.execute(mapping, form, request, response);
ActionErrors errors = null;
if (forward != null) {
return forward;
}
//HttpSession session = request.getSession();
//ActionMessages messages = null;
/* get action */
SearchTemplatesForm searchTemplatesForm = (SearchTemplatesForm) form;
String action = searchTemplatesForm.getAction();
if (null == action) // Correction Bug IE qui ne soumet pas le nom de l'action quand on appuie sur la touche "Enter"
{
action ="Lancer la recherche";
}
if (logger.isDebugEnabled()) {
logger.debug("perform : action = " + action);
}
if ("Lancer la recherche".equals(action) == false) {
throw new ServletException("SearchTemplateAction.perform : bad action value " + action);
}
/* check input data with the validator */
errors = form.validate(mapping, request);
if (errors!= null) {
if (errors.size() != 0) {
saveMessages(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
} else
errors = new ActionErrors();
/* search templates */
if (logger.isDebugEnabled()) {
logger.debug("perform : bouton recherche de templates selectionné");
}
/* get template code */
Integer code = null;
try {
code = new Integer(searchTemplatesForm.getCode().trim());
} catch (NumberFormatException e) { }
/* get status */
String type = searchTemplatesForm.getType();
if (true == SearchTemplatesForm.ALL_TYPE.equalsIgnoreCase(type))
type = null;
try {
Collection templates = DAOMsgTemplate.findTemplates(HibernateFilter.getSession(), code, type,MsgTemplate.V2_VERSION);
if (templates.isEmpty()) {
//
logger.info(30069, "Aucun template trouvé pour le code: " + code + ", type: " + type +", version" + MsgTemplate.V2_VERSION);
//session.removeAttribute("templatesCollection");
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("info.template.search"));
saveErrors(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
//pour gérer l'anomalie du tableau qui est tjrs affiché !!
// "request" au lieu de "session"
request.setAttribute("templatesCollection", templates);
return mapping.findForward("success");
}
catch (Exception e) {
logger.warn(30070, "Erreur lors de la recherche de templates: " + e);
errors.add("error_service_search", new ActionMessage("error.template.search"));
saveMessages(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
} |
No action instance for path /showServiceTemplatesV3 could be created
le message suivant s'affiche "No action instance for path" dans ma page jsp ::: est ce que qqun a une idée sur le processus d'instanciation des classes action avec struts ??
mon code est le suivant ::
dans le fichier struts-config.xml ::
au debut jai:
Code:
<forward name="showServiceTemplatesV3" path="/showServiceTemplatesV3.do"/>
Code:
1 2 3 4 5 6 7 8 9
|
<!-- Process show the templates service using a V3 template -->
<action input="/jsp/showServiceTemplatesV3.jsp" name="showServiceTemplatesV3Form"
path="/showServiceTemplatesV3" scope="session"
type="com.ctm.gd.saa.action.showServiceTemplatesV3Action" validate="false">
<forward name="success" path="/jsp/showServiceTemplatesV3.jsp" redirect="false"/>
<forward name="back" path="/jsp/updateTemplateV3.jsp"/>
<forward name="fail" path="/jsp/showServiceTemplatesV3.jsp" redirect="false"/>
</action> |
la classe updateTemplateV3Action::qui contient le bouton qui va afficher la page showServiceTemplatesV3.jsp
Code:
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
|
public class UpdateTemplateV3Action extends GDAction {
/** logger to trace the activities of the class */
private static GDLogger logger = GDLogger.getInstance(UpdateTemplateV3Action.class.getName());
private static int NB_PSMSUI_INSTANCES = 3;
/**
* Update the selected template
*
* @param mapping The ActionMapping used to select this instance
* @param actionForm The optional ActionForm bean for this request (if any)
* @param request The HTTP request we are processing
* @param response The HTTP response we are creating
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet exception occurs
*/
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (logger.isDebugEnabled()) {
logger.debug("perform : start");
}
/* check expired session */
ActionForward forward = super.execute(mapping, form, request, response);
if (forward != null) {
return forward;
}
/* get action */
ActionMessages messages = new ActionMessages();
UpdateTemplateForm updateTemplateForm = (UpdateTemplateForm) form;
String action = updateTemplateForm.getAction();
MsgTemplate initialTemplate = null;
MsgTemplate template = updateTemplateForm.getTemplate();
if ("Retour".equals(action)) {
if (logger.isDebugEnabled()) {
logger.debug("perform : bouton Retour recherche selectionné.");
}
return mapping.findForward("searchTemplates");
}
//nouvelle partie pour la gestion des services de templates associées
else if (("Templates de Service".equals(action))){
if (logger.isDebugEnabled()) {
logger.debug("perform : bouton Templates de Service selectionné.");
}
//get the template code
request.setAttribute("code",template.getCode());
return mapping.findForward("showServiceTemplatesV3");
}
else {
if ("Confirmer".equals(action) == false)
throw new ServletException("UpdateServiceAction.perform : bad action value " + action);
else
if (logger.isDebugEnabled())
logger.debug("perform : bouton Confirmer selectionné ");
}
/* the template must not be empty */
if (0 == updateTemplateForm.getTemplate().getValue().length()) {
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.void.template"));
saveMessages(request, (ActionMessages) messages);
return mapping.findForward("fail");
} |
la classe actio showServiceTemplates::
Code:
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
|
// $Header: F:/PVCS_GDv3/archives/GD-2.3/src/com/ctm/gd/saa/action/SearchMerchantsAction.java-arc 1.1 Nov 21 2005 19:29:34 dlafforg $
package com.ctm.gd.saa.action;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.ctm.gd.common.GDLogger;
import com.ctm.gd.logic.DAOServiceTemplates;
import com.ctm.gd.model.ServiceTemplates;
import com.ctm.gd.logic.common.HibernateFilter;
import com.ctm.gd.saa.form.ShowServiceTemplatesV3Form;
/**
*@author fbengazd
*
*/
public final class ShowServiceTemplatesV3Action extends GDAction {
static GDLogger logger = GDLogger.getInstance(ShowServiceTemplatesV3Action.class.getName());
/**
* Search Service Templates using a specific Message Template
* @param mapping The ActionMapping used to select this instance
* @param actionForm The optional ActionForm bean for this request (if any)
* @param request The HTTP request we are processing
* @param response The HTTP response we are creating
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet exception occurs
*/
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (logger.isDebugEnabled()) {
logger.debug("perform : start");
}
/* Check expired session */
ActionForward forward = super.execute(mapping, form, request, response);
if (forward != null) {
return forward;
}
/* Get action, treat simple cases */
ActionErrors errors = null;
ShowServiceTemplatesV3Form showServiceTemplates = (ShowServiceTemplatesV3Form) form;
String action = showServiceTemplates.getAction().trim();
String code = null;
/*
* check input data with the validator
*/
errors = form.validate(mapping, request);
if (errors != null) {
if (errors.size() != 0) {
saveErrors(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
} else
errors = new ActionErrors();
/* The template code*/
if (null != request.getParameter("code"))
code = request.getParameter("code").trim();
showServiceTemplates.setCode(code);
/* Search service Templates*/
try {
if (logger.isDebugEnabled()) {
logger.debug("perform : search associated service templates");
}
//récupérer la liste des service templates associées ...
Collection templates = DAOServiceTemplates.findServiceTemplatesFromCode(HibernateFilter.getSession(),code );
//mettre à jour le message d'erreur
if (templates == null) {
logger.info(30016, "Aucune template de service n'est associée à cette template.");
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("info.merchant.search"));
saveErrors(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
/* Save the service templates collection in the request */
if (logger.isDebugEnabled())
logger.debug("perform : Save our templates collection in the request");
request.setAttribute("serviceTemplates",templates);
} catch (Exception e) {
logger.warn(30017, "Erreur pendant la recherche des templates de service associées: " + e);
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.template.searchServiceTemplates"));
saveErrors(request, (ActionMessages) errors);
return new ActionForward(mapping.getInput());
}
if (logger.isDebugEnabled())
logger.debug("perform : end");
return mapping.findForward("success");
}
} |
la classe forme::
Code:
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
|
// $Header: F:/PVCS_GDv3/archives/GD-2.3/src/com/ctm/gd/saa/form/SearchMerchantsForm.java-arc 1.1 Nov 21 2005 19:29:40 dlafforg $
package com.ctm.gd.saa.form;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.validator.ValidatorForm;
import com.ctm.gd.common.GDLogger;
/**
*
* @version $Revision: 1.2 $
* the simpa id is no more used as a criteria to search merchants
*/
public final class ShowServiceTemplatesV3Form extends ValidatorForm implements Serializable {
/** logs */
static GDLogger logger = GDLogger.getInstance(SearchMerchantsForm.class.getName());
/** The template code */
private String code = null;
/** bottom selected */
private String action = null;
/**
* Reset all properties to their default values.
* @param mapping The mapping used to select this instance
* @param request The servlet request we are processing
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
if (logger.isDebugEnabled()) {
logger.debug("reset : reset all properties");
}
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
} |
enfin la page jsp::
Code:
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
|
<!-- $Header: F:/PVCS_GDv3/archives/GD-2.3/src/com/ctm/gd/saa/jsp/searchMerchants.jsp-arc 1.4 May 23 2006 11:38:26 jeissa $ $Revision: 1.4 $-->
<%@ page language="java" import="com.ctm.gd.model.*, java.util.*,com.ctm.gd.saa.action.*"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/gd-struts-logic.tld" prefix="gdlogic" %>
<html:html locale="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><bean:message key="searchMerchants.title"/></title>
<link href="css/global.css" type=text/css rel=stylesheet>
</head>
<body><!-- DHTML Menu Builder Loader Code START -->
<div id=DMBRI style="position:absolute;">
<img src="images/dmb_i.gif" name=DMBImgFiles width="1" height="1" border="0" alt="">
<img src="css/dmb_m.gif" name=DMBJSCode width="1" height="1" border="0" alt="">
</div>
<script language="JavaScript" type="text/javascript">
var rimPath=null;var rjsPath=null;var rPath2Root=null;function InitRelCode(){var iImg;var jImg;var tObj;if(!document.layers){iImg=document.images['DMBImgFiles'];jImg=document.images['DMBJSCode'];tObj=jImg;}else{tObj=document.layers['DMBRI'];if(tObj){iImg=tObj.document.images['DMBImgFiles'];jImg=tObj.document.images['DMBJSCode'];}}if(!tObj){window.setTimeout("InitRelCode()",700);return false;}rimPath=_gp(iImg.src);rjsPath=_gp(jImg.src);rPath2Root=rjsPath+"../";return true;}function _purl(u){return xrep(xrep(u,"%%REP%%",rPath2Root),"\\","/");}function _fip(img){if(img.src.indexOf("%%REL%%")!=-1) img.src=rimPath+img.src.split("%%REL%%")[1];return img.src;}function _gp(p){return p.substr(0,p.lastIndexOf("/")+1);}function xrep(s,f,n){if(s) s=s.split(f).join(n);return s;}InitRelCode();
</script>
<script language="JavaScript" type="text/javascript">
function LoadMenus() {if(!rjsPath){window.setTimeout("LoadMenus()", 10);return false;}var navVer = navigator.appVersion;
if(navVer.substr(0,3) >= 4)
if((navigator.appName=="Netscape") && (parseInt(navigator.appVersion)==4)) {
document.write('<' + 'script language="JavaScript" type="text/javascript" src="' + rjsPath + 'nsxpmenu.js"><\/script\>');
} else {
document.write('<' + 'script language="JavaScript" type="text/javascript" src="' + rjsPath + 'iexpmenu.js"><\/script\>');
}return true;}LoadMenus();</script>
<!-- DHTML Menu Builder Loader Code END -->
<img src="images/logo_sfr1.gif">
<span class="titre"> <bean:message key="searchMerchants.title"/></span>
<center>
<hr WIDTH="90%"/>
<br/>
<!-- Erreur d'acces a une page -->
<gdlogic:ckfunction fonction="searchMerchants" acces="EP">
<center><span class="titre1"><bean:message key="error.acces.page"/></span></center>
</gdlogic:ckfunction>
<!-- Acces a une page avec un right : "Nothing" -->
<gdlogic:ckfunction fonction="searchMerchants" acces="NA">
<center><span class="titre1"><bean:message key="prompt.acces.page"/></span></center>
</gdlogic:ckfunction>
<!-- Acces a une page avec un right : "Read Write" -->
<gdlogic:ckfunction fonction="searchMerchants" acces="R|RW">
<table border="0" cellspacing="1" width="90%">
<tr>
<TD CLASS="titre1"><bean:message key="prompt.criteria.message"/></TD>
</tr>
</table>
</center>
<html:form action="/showServiceTemplatesV3">
<logic:messagesPresent>
<bean:message key="errors.header"/>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
<br>
<br>
</logic:messagesPresent>
<center>
<br/>
<!-- display results list -->
<logic:notEmpty name="serviceTemplates" scope="request">
<hr WIDTH="90%"/>
<table border="0" cellspacing="1" width="90%">
<tr>
<TD><p class="titre"><bean:message key="prompt.result.string"/></P></TD>
</TR>
</TABLE>
<hr WIDTH="90%"/>
<table border="1" cellspacing="1" width="90%">
<tr>
<th align="center"><bean:message key="prompt.header.shortcode"/></th>
<th align="center"><bean:message key="prompt.serviceTemplates.code "/></th>
<th align="center"><bean:message key="prompt.merchant.externalId"/></th>
<th align="center"><bean:message key="prompt.serviceTemplates.status"/></th>
</tr>
<logic:iterate id="template" name="serviceTemplates" scope="request" type="com.ctm.gd.model.ServiceTemplates">
<tr>
<td align="center">
<html:link page="/preUpdateServiceTemplates.do" paramId="id" paramName="template" paramProperty="id">
<bean:write name="template" property="id" />
</html:link>
</td>
<td align="center" width="16%">
<bean:write name="template" property="merchantService.shortCode" />
</td>
<td align="center" width="16%">
<bean:write name="template" property="merchantService.merchant.externalId" />
</td>
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
<br>
</center>
</html:form>
</gdlogic:ckfunction>
</body>
</html:html> |
voilà jattends votre réponse