Bonjour,
Le comparateur ISNULL est bien celui qu'il faut
utiliser pour chercher les champs dont la valeur est null.
Pour prévenir ce genre de cas, il est possible
d'attribuer une valeur par défaut dans votre
champ de type date dans le cas où aucune date n'a
été rentrée, ceci à l'aide du fichier eventlistner.jsp
Dans ce cas votre eventlistner ressemblerait à ça:
<jsp:useBean id="eventsToTrap" class="java.util.Vector" scope="application"/>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="org.jahia.content.*" %>
<%@ page import="org.jahia.data.*" %>
<%@ page import="org.jahia.data.containers.*" %>
<%@ page import="org.jahia.data.fields.*" %>
<%@ page import="org.jahia.data.events.*" %>
<%@ page import="org.jahia.engines.*" %>
<%@ page import="org.jahia.engines.categories.*" %>
<%@ page import="org.jahia.engines.selectpage.*" %>
<%@ page import="org.jahia.engines.shared.*" %>
<%@ page import="org.jahia.params.*" %>
<%@ page import="org.jahia.registries.*" %>
<%@ page import="org.jahia.services.categories.*" %>
<%@ page import="org.jahia.services.containers.*" %>
<%@ page import="org.jahia.services.database.*" %>
<%@ page import="org.jahia.services.fields.*" %>
<%@ page import="org.jahia.services.pages.*" %>
<%@ page import="org.jahia.services.version.*" %>
<jsp:useBean id="eventsToTrap" class="java.util.Vector" scope="application"/>
<%
if (eventsToTrap.size() == 0) {
eventsToTrap.add("addContainerEngineAfterInit");
}
String eventName = (String) request.getAttribute("eventName");
JahiaEvent jahiaEvent = (JahiaEvent) request.getAttribute("jahiaEvent");
ParamBean jParams = jahiaEvent.getParams();
if ( eventsToTrap.contains(eventName)){
HashMap engineMap =
(HashMap)
jParams.getSession().getAttribute( "jahia_session_engineMap" );
if (engineMap == null) { return; }
String languageCode = (String)engineMap.get("languageCode");
HashSet updatedFields = (HashSet)engineMap.get("updated.fields");
if (updatedFields == null) {
updatedFields = new HashSet();
engineMap.put("updated.fields", updatedFields);
}
JahiaContainer theContainer = (JahiaContainer)jahiaEvent.getObject();
if ( "yourContainerName".equals(theContainer.getDefinition().getName()) ){
if ( "addContainerEngineAfterInit".equals(eventName) ) {
JahiaField theField = theContainer.getField("yourDateFieldName");
if (theField.getObject() == null) {
Calendar cal =
Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long now = cal.getTime().getTime();
String nowStr = String.valueOf(now);
theField.setObject(nowStr);
updatedFields.add(new Integer(theField.getID()));
}
}
}
}
%>
Philippe
At 23.11.2005 10:18, you wrote:
Bonjour,
Je souhaiterais faire un filtre sur une valeur null,
Le Contexte :
J'ai un champs datefin qui n'est pas toujours
renseigné, je souhaiterais faire un filtre sur
tous les éléments dont ( la date de fin est
supérieure ou égale a Now ) OU (la date de fin est null).
Et donc je suppose que si je ne renseigne pas la
date de fin, celle ci reste a null. (a moins
qu'elle n'ai une valeur par défaut comme '' )
Mon filtre ressemble a ceci :
ContainerFilterBean dateFilter = new
ContainerFilterBean("datefin",true,jData.params().getEntryLoadRequest());
dateFilter.addClause(ContainerFilterBean.COMP_BIGGER_OR_EQUAL,""
+todayCalendar.getTimeInMillis() );
Et dès que j'applique ce filtre aucun élément
dont datefin est non renseigné n'apparait . (ce
qui est logique du point de vue SQL)
J'ajoute donc une clause COMP_ISNULL en ecrivant :
dateFilter.addClause(ContainerFilterBean.COMP_ISNULL,"" );
(déja la syntaxe n'est pas correcte car la
requete générée ne semble pas bonne : b.value_jahia_fields_dataISNULL '' )
J'ai meme modifié les sources pour avoir
b.value_jahia_fields_data IS NULL mais ca ne
change rien. (hypersonic serait - t 'il différent ?)
Je me pose donc la question de comment filtrer
sur un élément dont la valeur n'est pas renseignée.
Si quelqu'un a la solution..
Eric
Jahia 4.1 Hypersonic (ou Oracle) + Tomcat 4.1
-------=[ pvollenweider at jahia dot com ]=---------
Jahia : A collaborative source CMS and Portal Server
www.jahia.org Community and product web site
www.jahia.com Commercial services company