2017-05-11 1 views
0

J'ai une classe java (une classe java incluse dans le composant) qui appelle une API et vérifie si la réponse est nulle. Si elle est nulle, je dois appeler le composant d'erreur. Lorsque je définis l'état de la réponse sur 404, cela ne fonctionne pas car, avant d'exécuter cette ligne, la réponse est 200. Comment appeler le composant d'erreur dans ce cas. Note: J'ai essayé de rediriger l'URL vers error.html, mais ce n'est pas la bonne solution.Appelant le composant d'erreur de manière java

Répondre

0

Il est généralement mal vu de rediriger ou de modifier l'état de réponse d'un composant/d'une vue car la réponse peut déjà avoir du contenu qui a été validé.

Vous pouvez remodeler votre application soit:

  1. Appelez le API à distance au début du traitement de la demande et, si l'API distante retourne null, retourner une 404 avant toute autre chose s'engage à réponse.
  2. traiter la réponse nulle de l'API à distance soit:
    • rendu une réponse appropriée, au cas où la réponse nulle est attendue/autorisée dans certains cas.
    • Lançant une exception, qui entraînera l'état 500, dans le cas où la réponse nulle n'est pas attendue.
+0

merci. Mais je suis confus lorsque vous dites "Appelez l'API à distance au début de la gestion des requêtes". Le flux est comme ceci 1. une mauvaise page est appelée qui n'existe pas 2. il va au composant de la page de son parent 3. le composant page a une classe java qui appelle l'API pour vérifier si la page existe ou pas (comme ces pages sont des pages dynamiques) 4. s'il existe, affichez-le, sinon redirigez vers la page d'erreur 404 Je ne peux pas définir l'état de réponse à l'étape 4 car le resp est déjà validé. Je ne peux pas le faire à l'étape 3 car je peux connaître son existence en appelant api. Alors, quelle étape proposez-vous? –

+0

@SkepticScribbler Peut-être que dans votre situation, il peut être utile d'avoir une servlet ou un filtre spécial qui gère/intercepte la requête et vérifie l'API/contenu dynamique. Une autre idée serait de définir votre assistant de page personnalisé/objet d'utilisation qui est invoqué avant tout est rendu et peut gérer la redirection. – Vlad

+0

ce sera vraiment utile si vous pouvez me diriger vers un article/url. Comme je suis nouveau à cela, j'ai compris ce que vous dites, mais je n'ai aucune connaissance sur la manière de l'implémenter. La deuxième idée convient à la situation en main mais quand je fais getResponse(). SendRedirect, ça marche bien mais ça change l'URL ce qui ne devrait pas arriver. Je suis reconnaissant pour votre temps et votre réponse jusqu'à maintenant de toute façon! –