6
votes

Comment diffuser le texte de la réponse du texte à partir d'un webApp Java Spring Spring MVC 3.0

Comment puis-je diffuser du texte de texte sur la page sur le navigateur pour afficher la progression d'une opération pouvant prendre environ 15 à 20 secondes? J'ai essayé d'écrire au flux de sortie de httppservletresponse directement, mais l'utilisateur voit toujours la sortie complète après tout le processus est terminé.

C'est ce que je suis J'ai essayé jusqu'à présent xxx


6 commentaires

Avez-vous essayé de rincer la sortie de la sortie après que chaque mandrin de données est envoyé?


@LUCIANO J'ai ajouté ce que j'ai essayé jusqu'à la question. Cela ne fonctionne pas quand j'appuie la page de Chrome


Je pense que votre meilleur pari serait une approche différente: utilisez une minuterie en JavaScript qui récupère les données de / tester toutes les 1 seconde (ou une demi-seconde), à ​​l'aide de Ajax et / test retournerait tout ce qui n'a pas été envoyé avant le point il a été appelé.


@LUCIANO Ce que vous suggérez, c'est mon plan de secours, que je pourrais finir de toute façon. Toutefois, si ma question a une réponse valide, je peux voir que cela se fait sans un exécuteur d'emploi ASYNC et une direction de l'État, que je ressens plus élégant.


Vous pouvez également essayer avec les sockets Web, mais cela nécessiterait davantage de modifications à votre application.


Je crois que c'est une configuration de serveur d'applications. S'il vous plaît, voir Mon message .


4 Réponses :


-5
votes
@Controller
public class MyController{

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody String getTest() {
      return "hello how are you";
    }
}
If you are using spring controller you could do the above with the response body annotation.

1 commentaires

@SanpatrickFloyd Oh, je n'ai pas vu / lu ce bit. C'est un peu plus fort ... pas sûr



2
votes

Je ne suis pas expert de printemps MVC, mais je penserais que vous feriez quelque chose comme envoyer un code de réponse 202 de "Accepté", indiquant que le serveur a reçu la demande et va faire du traitement asynchrone. Habituellement, le serveur fournit une URL permettant au client de délivrer des demandes concernant l'état de l'opération. Ce que vous essayez de faire violer le fonctionnement des relations de serveur / client habituels. Le client appelle le serveur et le serveur répond, puis la connexion est fermée. Dans quel contexte essayez-vous de faire cela et de quelle raison? Je pourrais peut-être offrir un peu plus de perspicacité ou penser à une autre façon de le faire?


3 commentaires

Merci de votre intérêt! Fondamentalement, je souhaite fournir à l'utilisateur une capacité à demander une exécution d'emploi, pouvoir surveiller les progrès et avoir mis à jour son point de vue une fois le travail terminé. Je peux voir comment cela peut être fait en faisant l'exécutif de travail ASYNC et en maintenant un État dans la session et sondage de l'interface utilisateur. Cependant si ma question a une réponse valide, je peux voir que cela se déroule sans un exécuteur exécutif et une direction de l'État ASYNC.


J'ai l'impression que ce que vous demandez est que le serveur contacte le client et sans impossibilité, ce serait très irrégulier. De toute évidence, il y a des itinéraires pour renvoyer des informations au client (comme FTP) dans des montants chuntés, mais malheureusement, je sais que si cela est applicable pour ce que vous voulez faire, et je ne sais pas si cela est possible avec le printemps MVC. Bonne chance!


Merci! Je vais probablement aller avec la méthode de vote que vous et d'autres personnes mentionnées pour l'instant et conserver cette question ouverte pour le moment. J'adore explorer toutes les possibilités. Acclamations!



1
votes

Essayez d'utiliser:

response.flushBuffer();


0 commentaires

0
votes

Cela a fonctionné pour moi lors du test avec chrome xxx


0 commentaires