L’initList est appelé avant chaque affichage de liste. Donc votre code repositionne le filtre à chaque fois, impossible de le retirer.
La question est plutôt de savoir dans quels cas il faut remettre un filtre par défaut si l’utilisateur le retire ?
Si c’est un filtre uniquement au premier affichage de la liste, vous devez gérer un flag (boolean membre de la classe) dans votre objet pour que l’initList ne le fasse qu’une fois :
if (!flag) { flag=true; setFieldFilter(…); }
ou mettre le filtre qu’au niveau de postLoad de votre instance car ce hook est appelé qu’une seule fois par instance
On peut aussi créer une Action de Liste qui positionne le filtre (ex: “dossiers de la semaine”), que l’utilisateur pourra retirer tant qu’il ne repasse pas par l’action. Je préfère cette approche car l’utilisateur à le choix et comprend mieux ce qui se passe
enfin si vous connaissez un contexte de navigation, c’est plutôt l’appelant (ou ce qui se passe avant) qui doit positionner le filtre.
Exemple l’initUpdate d’un formulaire parent qui récupérerait l’objet fils pour lui mettre le filtre via getGrant().getPanelObject(…).setFieldFilter(…).
On peut aussi mettre un contexte de navigation ou d’usage dans les paramètre de l’objet ou des la session (ObjectDB ou Grant via set/getParameter), pour déterminer s’il faut le filtre ou non suivant par où on est passé (setParameter) dans l’initList (getParameter).