Je souhaite envoyer une chaîne en réponse à la méthode AJAX xhrPOST. J'utilise Struts2 pour implémenter le traitement côté serveur. Mais, je ne comprends pas comment envoyer le résultat "type" sous forme de chaîne et le mappage qui devrait être fait pour envoyer la chaîne de la classe d'action struts2 à la réponse AJAX.Renvoyer le type de résultat de la chaîne à partir de Struts2
Répondre
Vous pouvez créer un simple StringResult assez facilement en étendant StrutsResultSupport, mais rien n'existe autant que je sache.
est ici une mise en œuvre que je l'ai utilisé dans le passé un simple StringResult:
public class StringResult extends StrutsResultSupport {
private static final Log log = LogFactory.getLog(StringResult.class);
private String charset = "utf-8";
private String property;
private String value;
private String contentType = "text/plain";
@Override
protected void doExecute(String finalLocation, ActionInvocation invocation)
throws Exception {
if (value == null) {
value = (String)invocation.getStack().findValue(conditionalParse(property, invocation));
}
if (value == null) {
throw new IllegalArgumentException("No string available in value stack named '" + property + "'");
}
if (log.isTraceEnabled()) {
log.trace("string property '" + property + "'=" + value);
}
byte[] b = value.getBytes(charset);
HttpServletResponse res = (HttpServletResponse) invocation.getInvocationContext().get(HTTP_RESPONSE);
res.setContentType(contentType + "; charset=" + charset);
res.setContentLength(b.length);
OutputStream out = res.getOutputStream();
try {
out.write(b);
out.flush();
} finally {
out.close();
}
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}
Je l'ai utilisé le json plugin pour faire des choses semblables. Si vous utilisez, vous pouvez utiliser ce qui suit pour exposer une seule propriété String dans votre action:
<result name="success" type="json">
<param name="root">propertyToExpose</param>
</result>
Vous pouvez avoir votre méthode d'action retourne pas un résultat de chaîne, mais un résultat de type StreamResult.
En d'autres termes:
class MyAction {
public StreamResult method() {
return new StreamResult(new ByteArrayInputStream("mystring".getBytes()));
}
}
Vous ne devez pas nécessairement renvoyer une chaîne à partir d'une méthode d'action Struts2. Vous pouvez toujours renvoyer une implémentation de l'interface Result de xwork.
copie cette classe d'action en
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
public String execute(){
inputStream = new StringBufferInputStream("some data to send for ajax response");
return SUCCESS;
}
struts.xml
<action name=....>
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
Cela fonctionne quand nous voulons envoyer une seule donnée en réponse
Que faisons-nous pour obtenir cette valeur de chaîne dans l'aide jsp page.plz. –
StringBufferInputStream est obsolète. essayez à la place: ByteArrayInputStream ("some ... response" .getBytes()); – fishjd
- 1. Impossible de définir le type de résultat Struts2 sur json
- 2. Dans MVC, comment puis-je renvoyer un résultat de chaîne?
- 3. De la chaîne FullyName à l'objet Type
- 4. JPA: Comment obtenir un résultat scalaire de type Long-- not BigNumber-- à partir d'Oracle NUMBER?
- 5. Comment renvoyer le résultat de la procédure stockée Sql Server à .Net
- 6. MySQL - passe le champ de la base de données via la fonction PHP avant de renvoyer le résultat
- 7. Reporting Services, comment utiliser une chaîne de connexion à partir d'un résultat de requête
- 8. Comment renvoyer le résultat d'un appel JSONP en dehors de la fonction?
- 9. Renvoyer une valeur de type Microsoft.XLANGs.BaseTypes.XLANGMessage
- 10. Comment exécuter le fichier batch sur le serveur et renvoyer le résultat au client
- 11. Résoudre le type CLR à partir de DataContract.Namespace?
- 12. Comment renvoyer une chaîne verbatim à partir de ConfigurationManager.AppSetting ["settingname"]. ToString()
- 13. appelant une fonction javascript à partir d'un résultat de formulaire
- 14. comment définir le délai d'expiration de la requête à partir de la chaîne de connexion SQL
- 15. données Xml dans la chaîne de type
- 16. Chaîne de connexion SqlDataSource à partir de la page .aspx
- 17. struts2 combobox - passe ID entier et pas Nom de chaîne via le formulaire à l'action
- 18. C# coulée au type obtenu à partir typename sous forme de chaîne
- 19. LINQ: quel est le type d'un résultat?
- 20. Renvoyer le curseur de la procédure stockée
- 21. Comment faire pour convertir le résultat de chaîne de enum avec overrenced toString() retour à enum?
- 22. Modifier le type de colonne de la liste à partir de Recherche dans Sharepoint
- 23. Demande le type Lua userdata à partir de C
- 24. Essayer de renvoyer un nombre spécifié de caractères à partir d'une séquence de gène dans R
- 25. .NET Type chargeable à partir de App.Config
- 26. C#: Type.GetType appelé à partir d'une dll sur chaîne de type exe
- 27. Sum colonnes DataTable de type chaîne
- 28. struts2 demande de codage
- 29. Quelle est la meilleure pratique pour renvoyer des fichiers à partir de WCF?
- 30. Création de code XML à partir d'un résultat LINQ
Probablement que vous vouliez dire * return new StreamResult (new ByteArrayInputStream ("mystring" .getBytes())); * Cela a aidé, merci –