IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tapestry Java Discussion :

Effectuer une recherche multicritères


Sujet :

Tapestry Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut Effectuer une recherche multicritères
    Bonjour bonjour!!!

    Alors aujourd'hui j'essaye de faire une recherche multicritère sur une liste d'objet, en fonctions de critères divers et variés donc.

    Voici tout d'abord l'affichage de ma liste d'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <div id="corps">
    		  	<div t:type="loop" t:source="isoMsgList" t:value="isoMsg">
    			  	<div id="Liste" style="background-color: ${getIsoMsgState()}">
    				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${getLibelleType()}
     
    			  		<div t:type="loop" t:source="ssMsgList" t:value="isoMSg">
    				  		<div id="ListSsMsg" style="background-color: ${getIsoMsgState()}">
    				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${isoMsg.exception}/${getLibelleType()}
    				  		</div>
    			  		</div>
    			  	</div>
    			  </div>
     
    		</div>
    Il s'agit donc d'objets messages, chaque objet pouvant contenir des sous messages.

    J'ai donc voulu affiner cet affichage en proposant à l'utilisateur de rechercher des messages par types, date d'émission et état de retour du message de la façons suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	  	<t:form>
    		 <p>
             	<label t:type="label" t:for="type"  /> :
             	<input t:type="select" t:id="type" t:model="types" t:value="libelle" style="width: 230px;" />
             	<label t:type="label" t:for="etatRetour" /> :
             	<input t:type="select" t:id="etatRetour" t:model="literal: ok, non-ok"/>
             	<input t:id="dateTimeField1"/>
             	<input t:type="submit" t:name="Rechercher"/>
        	 </p>                      
    		</t:form>
    Et voici le code java derrière tout ça :

    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
    	@Persist
    	@Property
    	private String libelle;
     
    	@SuppressWarnings("unused")
    	@Component(parameters = { "value=actualDate1",
    			"datePattern=dd-MM-yyyy HH:mm" })
    	private DateTimeField _dateTimeField1;
     
     
    	@Persist
    	@Property
    	private Date _actualDate1;
     
    	@Persist
    	@Property
    	private String _etatRetour;
     
    	Object onSuccess(){
    		return BorneDetails.class;		
    	}
     
    public List<IsoMsg> getIsoMsgList() {
    		String error = null;
    		try {
    			if(_etatRetour == null)
    			{
    				error = null;
    			}
    			else if(_etatRetour.equals("ok"))
    			{
    				error = "false";
    			}
    			else if(_etatRetour.equals("non-ok"))
    			{
    				error = "true";
    			}
    			TypeIso type = null;
    			if (libelle !=null){
    				type = typeIsoManager.findByLibelle(libelle); 
    			}
     
    			return (List<IsoMsg>) isoMsgManager.findMultiCritere(bornes.getId(), _actualDate1, type, error);
    		} catch (BusinessException e) {
     
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
     
    			e.printStackTrace();
    			return null;
    		}
    	}
    public List<String> getLibelleList() {
    		try {
    			return typeIsoManager.findLibelle();
    		} catch (BusinessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public List<IsoMsg> getSsMsgList() {
     
    		try {
    			return (List<IsoMsg>) (isoMsgManager.findSsMsg(isoMsg
    					.getIdMessage()));
    		} catch (BusinessException e) {
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public String getIsoMsgState() {
    		color = service.isoMsgState(isoMsg.getIdMessage());
    		return color;
    	}
     
    	public String getLibelleType() {
    		TypeIso type;
    		try {
    			type = typeIsoManager.findById(isoMsg.getTypeIso().getIdType());
    		} catch (BusinessException e) {
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			e.printStackTrace();
    			return null;
    		}
    		return type.getLibelle();
    	}
    Mais lorsque je tente ma recherche, j'aboutis à l'exception suivante :

    [ERROR] borne.BorneDetails Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null.
    org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.render(ComponentPageElementImpl.java:258)
    at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
    at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
    at $PageRenderQueue_12a561aec35.render($PageRenderQueue_12a561aec35.java)
    at $PageRenderQueue_12a561aec2b.render($PageRenderQueue_12a561aec2b.java)
    at org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
    at org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at $MarkupRenderer_12a561aec34.renderMarkup($MarkupRenderer_12a561aec34.java)
    at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
    at $PageMarkupRenderer_12a561aec32.renderPageMarkup($PageMarkupRenderer_12a561aec32.java)
    at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
    at $PageResponseRenderer_12a561aebd0.renderPageResponse($PageResponseRenderer_12a561aebd0.java)
    at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
    at org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
    at $PageRenderRequestHandler_12a561aebd1.handle($PageRenderRequestHandler_12a561aebd1.java)
    at $PageRenderRequestHandler_12a561aebbb.handle($PageRenderRequestHandler_12a561aebbb.java)
    at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
    at $ComponentRequestHandler_12a561aebc0.handlePageRender($ComponentRequestHandler_12a561aebc0.java)
    at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
    at $Dispatcher_12a561aebc3.dispatch($Dispatcher_12a561aebc3.java)
    at $Dispatcher_12a561aebb9.dispatch($Dispatcher_12a561aebb9.java)
    at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
    at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
    at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at $RequestHandler_12a561aebb0.service($RequestHandler_12a561aebb0.java)
    at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
    at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
    at $HttpServletRequestFilter_12a561aebaf.service($HttpServletRequestFilter_12a561aebaf.java)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at $HttpServletRequestHandler_12a561aebac.service($HttpServletRequestHandler_12a561aebac.java)
    at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:522)
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:496)
    at org.apache.tapestry5.corelib.components.Select._$read_parameter_model(Select.java)
    at org.apache.tapestry5.corelib.components.Select.options(Select.java:236)
    at org.apache.tapestry5.corelib.components.Select.beforeRenderTemplate(Select.java)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.invokeComponent(ComponentPageElementImpl.java:253)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:941)
    ... 73 more
    [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null.
    org.apache.tapestry5.internal.services.RenderQueueException: Render queue error in BeforeRenderTemplate[borne/Details:type]: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
    at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:86)
    at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
    at $PageRenderQueue_12a561aec35.render($PageRenderQueue_12a561aec35.java)
    at $PageRenderQueue_12a561aec2b.render($PageRenderQueue_12a561aec2b.java)
    at org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
    at org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
    at $MarkupRenderer_12a561aec37.renderMarkup($MarkupRenderer_12a561aec37.java)
    at $MarkupRenderer_12a561aec34.renderMarkup($MarkupRenderer_12a561aec34.java)
    at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
    at $PageMarkupRenderer_12a561aec32.renderPageMarkup($PageMarkupRenderer_12a561aec32.java)
    at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
    at $PageResponseRenderer_12a561aebd0.renderPageResponse($PageResponseRenderer_12a561aebd0.java)
    at org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
    at org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
    at $PageRenderRequestHandler_12a561aebd1.handle($PageRenderRequestHandler_12a561aebd1.java)
    at $PageRenderRequestHandler_12a561aebbb.handle($PageRenderRequestHandler_12a561aebbb.java)
    at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
    at $ComponentRequestHandler_12a561aebc0.handlePageRender($ComponentRequestHandler_12a561aebc0.java)
    at org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
    at $Dispatcher_12a561aebc3.dispatch($Dispatcher_12a561aebc3.java)
    at $Dispatcher_12a561aebb9.dispatch($Dispatcher_12a561aebb9.java)
    at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
    at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
    at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
    at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
    at $RequestHandler_12a561aebba.service($RequestHandler_12a561aebba.java)
    at $RequestHandler_12a561aebb0.service($RequestHandler_12a561aebb0.java)
    at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
    at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
    at $HttpServletRequestFilter_12a561aebaf.service($HttpServletRequestFilter_12a561aebaf.java)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
    at $HttpServletRequestHandler_12a561aebb2.service($HttpServletRequestHandler_12a561aebb2.java)
    at $HttpServletRequestHandler_12a561aebac.service($HttpServletRequestHandler_12a561aebac.java)
    at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.render(ComponentPageElementImpl.java:258)
    at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
    ... 69 more
    Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Parameter 'model' of component borne/Details:type is bound to null. This parameter is not allowed to be null. [at classpath:com/atosworldline/effia/applira/web/pages/borne/BorneDetails.tml, line 24]
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:522)
    at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl$1.read(InternalComponentResourcesImpl.java:496)
    at org.apache.tapestry5.corelib.components.Select._$read_parameter_model(Select.java)
    at org.apache.tapestry5.corelib.components.Select.options(Select.java:236)
    at org.apache.tapestry5.corelib.components.Select.beforeRenderTemplate(Select.java)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.invokeComponent(ComponentPageElementImpl.java:253)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:941)
    ... 73 more
    Je pense que cela doit venir du rechargement de ma page sur la fonction onSuccess (je doit dire que je ne suis pas vraiment fan de cette façons de faire, recharger la page avec mes critères en persitants...) Mais je ne trouve pas d'autre moyen de faire...

    Quelqu'un aurais une idée? (Je le béni d'avance )

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    Pourrais tu poster la class "BornDetails"?
    Sinon je pense que sa vient des sources de tes loop, quand tu rafraichis il ne se charge pas.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Bon bah problème résolu ^^ Je sais pas trop comment je me suis débrouillé mais ça marche ^^ en fait il fallait juste rajouter un accesseur pour la List types et enlever le @Property car le getter par défault (généré automatiquement avec l'annotation @Property) ne suffisait pas (je rempli ma liste types à l'aide de données en bases)

    Et le fait que mes paramètres soit persistant permet bien la recherche.

    Par contre je ne suis pas sur que ma solution soit vraiment "élégante", je persiste des paramètres et je recharge "sauvagement" la page... Connait-tu de meilleur solution?

    En tout cas j'ai une solution qui fonctionne c'est déjà ça ^^

    Voici les sources si jamais quelqu'un à le même problème ^^

    BorneDetails.java :

    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
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    public class BorneDetails {
     
    	@Inject
    	@Service("userManager")
    	private UserManager userManager;
     
    	@Inject
    	@Service("borneManager")
    	private BorneManager borneManager;
     
    	@Inject
    	@Service("isoMsgManager")
    	private IsoMsgManager isoMsgManager;
     
    	@Inject
    	@Service("typeIsoManager")
    	private TypeIsoManager typeIsoManager;
     
    	@Inject
    	private IsoMsgService service;
     
    	@SessionState(create = false)
    	@Property
    	private String nomUser;
     
    	@Persist
    	@Property
    	private Bornes bornes;
     
    	@Property
    	private IsoMsg isoMsg;
     
    	@Property
    	private String color;
     
    	private List<String> types;
     
    	@Persist
    	@Property
    	private String libelle;
     
    	@SuppressWarnings("unused")
    	@Component(parameters = { "value=actualDate1",
    			"datePattern=dd-MM-yyyy HH:mm" })
    	private DateTimeField _dateTimeField1;
     
    	@Persist
    	@Property
    	private Date _actualDate1;
     
    	@Persist
    	@Property
    	private String _etatRetour;
     
    	/**
             * Méthode lancée à l'activation de la page (avant le chargement). Test si
             * l'attribution de session nomUser n'est pas null et correspond bien à un
             * user existant en BDD.Teste aussi si l'instances passée en paramètres
             * n'est pas null.
             * 
             * @return null si nomUser est correct, Index.class sinon afin de rediriger
             *         vers la page Index ou Accueil.class si l'instance en paramètres
             *         est fausse.
             */
     
    	public Object onActivate(int idBorne, long idAo) {
    		try {
    			userManager.findByNomUser(nomUser);
    		} catch (BusinessException e) {
    			return Index.class;
    		} catch (TechnicalException e) {
    			return Index.class;
    		}
    		try {
    			BornesId id = new BornesId(idBorne, idAo);
    			bornes = borneManager.findById(id, false);
    		} catch (BusinessException e) {
    			return Instance.class;
    		} catch (TechnicalException e) {
    			return Instance.class;
    		}
    		return null;
    	}
     
    	Object onSuccess() {
    		return BorneDetails.class;
    	}
     
    	public List<String> getTypes()
    	{
    		try {
    			this.types = typeIsoManager.findLibelle();
    			return this.types;
    		} catch (BusinessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (TechnicalException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return null;
    	}
     
    	@OnEvent(component = "logout")
    	public Object onLogout() {
    		nomUser = null;
    		return Index.class;
    	}
     
    	public List<IsoMsg> getIsoMsgList() {
    		String error = null;
    		try {
    			if (_etatRetour == null) {
    				error = null;
    			} else if (_etatRetour.equals("ok")) {
    				error = "false";
    			} else if (_etatRetour.equals("non-ok")) {
    				error = "true";
    			}
    			TypeIso typeIso = null;
    			if (libelle != null) {
    				typeIso = typeIsoManager.findByLibelle(libelle);
    			}
     
    			return (List<IsoMsg>) isoMsgManager.findMultiCritere(
    					bornes.getId(), _actualDate1, typeIso, error);
    		} catch (BusinessException e) {
     
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
     
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public List<String> getLibelleList() {
    		try {
    			return typeIsoManager.findLibelle();
    		} catch (BusinessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public List<IsoMsg> getSsMsgList() {
     
    		try {
    			return (List<IsoMsg>) (isoMsgManager.findSsMsg(isoMsg
    					.getIdMessage()));
    		} catch (BusinessException e) {
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public String getIsoMsgState() {
    		color = service.isoMsgState(isoMsg.getIdMessage());
    		return color;
    	}
     
    	public String getLibelleType() {
    		TypeIso type;
    		try {
    			type = typeIsoManager.findById(isoMsg.getTypeIso().getIdType());
    		} catch (BusinessException e) {
    			e.printStackTrace();
    			return null;
    		} catch (TechnicalException e) {
    			e.printStackTrace();
    			return null;
    		}
    		return type.getLibelle();
    	}
    }
    Bornedetails.tml :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
    	<head>
    		<title>Liste des messages de la borne ${bornes.nomBorne}</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    	</head>
    	<body>
    		<div id="en_tete">
    	   		<h1>Application de suivis des traitements applicatifs</h1>
    		</div>
     
    		<div id="menu">
    			<ul class="liens">
    		   		<li><t:pagelink page="common/UserSave">Créer utilisateur</t:pagelink></li>
    		   		<li><t:actionlink t:id="logout">Deconnexion</t:actionlink></li>
    		   		<li><t:pagelink page="common/Accueil">Retour</t:pagelink></li>
    		   	</ul>
    		</div>
    	  	<t:form>
    		 <p>
             	<label t:type="label" t:for="libelle"  /> :
             	<input t:type="select" t:id="libelle" t:model="types" style="width: 230px;" />
             	<label t:type="label" t:for="etatRetour" /> :
             	<input t:type="select" t:id="etatRetour" t:model="literal: ok, non-ok"/>
             	<input t:id="dateTimeField1"/>
             	<input t:type="submit" t:name="Rechercher"/>
        	 </p>                      
    		</t:form>
    		<div id="corps">
    		  	<div t:type="loop" t:source="isoMsgList" t:value="isoMsg">
    			  	<div id="Liste" style="background-color: ${getIsoMsgState()}">
    				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${getLibelleType()}
     
    			  		<div t:type="loop" t:source="ssMsgList" t:value="isoMSg">
    				  		<div id="ListSsMsg" style="background-color: ${getIsoMsgState()}">
    				  			${isoMsg.idMessage}/${isoMsg.horodatage}/${isoMsg.exception}/${getLibelleType()}
    				  		</div>
    			  		</div>
    			  	</div>
    			  </div>
     
    		</div>
     
    		<div id="pied_de_page">
    		   <!-- Enfin, on mettra en bas de la page le nom de l'auteur, un copyright... -->
    		</div>
    	</body>	
    </html>
    edit : Question subsidiaire : Je suis en train de faire la "déco" de mon application, quelqu'un sait-il comment intégrer des images via un fichier .css? car j'ai beau essayer pas moyen d'y arriver, pourtant je ne me trompe pas, la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    background-image: url(${context:images/bandeau.png});
    permet bien d'ajouter une image de fond nan?

Discussions similaires

  1. Erreur syntaxe dans une recherche multicritère
    Par cigale13 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 09h58
  2. Comment effectuer une recherche dans une listBox?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 19/05/2006, 16h15
  3. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 09h27
  4. Effectuer une recherche avec jEdit
    Par lyon72 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 3
    Dernier message: 04/04/2006, 18h44
  5. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo