Il n’est pas forcément évident de faire un redirect 404 de manière programmatique en JAVA.
Un des principaux cas d’utilisation est lorsqu’on utilise un url rewritting pour générer des liens vers des pages web. Il peut arriver que la page web n’existe pas ou n’existe plus mais que la redirection (par exemple avec pretty-faces) vous a déjà fait calculer une partie de la page. Il devient dès lors très compliqué d’envoyer proprement une 404 au navigateur et non pas un simple message d’erreur.
Pourquoi il est important d’envoyer une vrai error 404?
Pour le référencement. En effet il est important que les moteurs de recherche trouvent bien une erreur 404 et non une page d’erreur classique. Sinon le référencement va en patir.
La solution se fait en deux étapes.
Premièrement créer un validator qui va valider la donnée « métier ». Est-ce que ma page existe réellement.
{{< highlight java >}} package validators;
import java.io.IOException;
import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.http.HttpServletResponse;
@Named public class PageValidatorFaq404 {
public void validate(javax.faces.event.ComponentSystemEvent tete) {
if (monTest) {
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().setResponseStatus(404);
context.responseComplete();
HttpServletResponse lHttpServletResponse = ((HttpServletResponse) FacesContext
.getCurrentInstance().getExternalContext().getResponse());
try {
lHttpServletResponse
.sendError(HttpServletResponse.SC_NOT_FOUND);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}{{< /highlight >}}
Dans la page que nous voulons valider, il suffit de rajouter un validator sur la phase prerenderview comme ci.
{{< highlight java >}} < f:metadata> < f:event listener="#{pageValidatorGlossaire404.validate}" type="preRenderView" /> < /f:metadata>{{< /highlight >}}
Ainsi lors que la page ne valide pas le validator, une vrai erreur 404 est envoyé au navigateur et vous pouvez ensuite la traiter de manière propre, en affichant par exemple une jolie page 404 en la configurant de votre web.xml comme ceci:
{{< highlight java >}} < error-page> < error-code>404< /error-code> < location>/error404.xhtml< /location> < /error-page>{{< /highlight >}}
Découvrez la planche #66 !
Face à l'explosion des coûts liés au cloud public, une nouvelle discipline s'impose : le FinOps. Dans un contexte où les entreprises adoptent massivement les infrastructures cloud pour leur flexibilité et leur scalabilité, les mauvaises surprises sur la facture sont malheureusement devenues monnaie courante. Optimiser ses dépenses cloud n'est plus un luxe, mais une nécessité pour garantir la rentabilité des projets et maitriser ses budgets IT. Mais pas de panique ! Cet article vous dévoile tout ce que vous devez savoir sur le FinOps, ses principes clés, et les bonnes pratiques pour maîtriser vos coûts tout en tirant le meilleur parti de vos ressources cloud.
Générer un rapport dans Jasperreport n’est pas simple. Jasperreport compilant de façon séquentielle, il n’est pas facile de stocker les numéros des pages générées pour ensuite les afficher sur la première page du rapport.