Je développe un portlet compatible JSR-286 basé sur les entretoises 1.2.9 (pour des raisons historiques, nous voulons réutiliser beaucoup de code existant) en utilisant le pont de portlets struts. Je veux que certains liens changent le WindowState, mais le FormTag et le LinkTag fournis par le pont de portail n'ont pas un moyen facile de définir le WindowState. Je suis heureux d'étendre ces deux balises, mais je ne sais pas comment procéder, comment puis-je déterminer quels paramètres de requête doivent ajouter d'une manière agnostique de portail?Comment définir WindowState dans les liens de portlet basés sur un pont Struts?
0
A
Répondre
2
Eh bien, pourrait aussi bien répondre à ma propre question :-)
je devais créer mes propres versions de TagsSupport, FormTag et LinkTag sur la base (non extension) du code barres pont.
J'ai modifié les méthodes TagsSupport.getUrl() et TagsSupport.getFormTagRenderFormStartElement() pour accepter un paramètre WindowState et l'utiliser lors de la création d'URL de rendu et d'action.
public static String getURL(PageContext pageContext, String url, PortletURLTypes.URLType type, WindowState ws)
...
if (type.equals(PortletURLTypes.URLType.ACTION))
{
final PortletURL portletURL = StrutsPortletURL.createActionURL(pageContext.getRequest(), url);
if (ws!=null) {
try {
portletURL.setWindowState(ws);
}
catch (WindowStateException e) {
e.printStackTrace();
}
}
return portletURL.toString();
}
else if (type.equals(PortletURLTypes.URLType.RENDER))
{
final PortletURL portletURL = StrutsPortletURL.createRenderURL(pageContext.getRequest(), url);
if (ws!=null) {
try {
portletURL.setWindowState(ws);
}
catch (WindowStateException e) {
e.printStackTrace();
}
}
return portletURL.toString();
}
...
et
public static String getFormTagRenderFormStartElement(PageContext pageContext, String formStartElement, WindowState ws)
{
if (PortletServlet.isPortletRequest(pageContext.getRequest()))
{
int actionURLStart = formStartElement.indexOf("action=") + 8;
int actionURLEnd = formStartElement.indexOf('"', actionURLStart);
String actionURL = formStartElement.substring(actionURLStart,
actionURLEnd);
final PortletURL portletURL = StrutsPortletURL.createActionURL(pageContext.getRequest(),
actionURL);
if (ws!=null) {
try {
portletURL.setWindowState(ws);
}
catch (WindowStateException e) {
e.printStackTrace();
}
}
formStartElement = formStartElement.substring(0, actionURLStart)
+ portletURL.toString()
+ formStartElement.substring(actionURLEnd);
}
return formStartElement;
}
J'ai alors changé FormTag et LinkTag d'accepter un attribut WindowState et le transmettre aux méthodes TagsSupport.
private String windowState;
public String getWindowState() {
return windowState;
}
public void setWindowState(String windowState) {
this.windowState = windowState;
}
et
url = TagsSupport.getURL(pageContext, url, urlType, new WindowState(getWindowState()));
Il est donc évident besoin d'un tld pour référencer mes tags modifiés.
Ceci a été fourni sous la forme d'un correctif PB-91 (incorporant également un correctif pour le changement de mode de portlet) au projet de pont Struts.
Questions connexes
- 1. Comment tromper MVC dans des liens de rendu basés sur un chemin virtuel différent?
- 2. Pont NSB sur WCF
- 3. Jeditable: comment définir les paramètres basés sur les attributs de l'élément dom
- 4. Création de liens de navigation dans Struts 2
- 5. Comment afficher le contenu Excel de Struts portlet sur Websphere Portal
- 6. Pont JMS dans WebSphere 7.0
- 7. Rapports basés sur un formulaire
- 8. Comment réparer un StackOverflowError sur Struts DispatchAction?
- 9. Puis-je faire en sorte qu'un portlet basé sur des struts se souvienne de sa vue lorsqu'un autre portlet est utilisé?
- 10. Comment définir la portée d'action struts 2
- 11. Comment enregistrer les positions de portlet
- 12. Comment définir les paramètres régionaux dans un Struts personnalisé 2 ActionMapper
- 13. Comment fonctionnent les moteurs de rendu 2d basés sur Scanline?
- 14. Synchronisation d'événements basés sur un objet com
- 15. Restaurer WindowState à partir de minimisé
- 16. Django, comment les liens publics sur Facebook?
- 17. Comment échanger des contrôles basés sur une propriété de dépendance?
- 18. JQuery - comment ajouter un objet à iframe dans les navigateurs basés sur WebKit (chrome/safari)?
- 19. Comment trouver tous les liens/pages sur un site Web
- 20. Recherche de forums basés sur les permissions d'un utilisateur
- 21. Comment hériter des styles basés sur le type dans WPF?
- 22. Sélection d'index basés sur les noms de colonne/table
- 23. numéro de pont dans Modality SWT_AWT
- 24. Construire un pont entre Joomla et eGroupware
- 25. Migration de portlet Websphere, paramètre manquant dans DispatchAction
- 26. Substitutions dans les liens dans reST/Sphinx
- 27. Comment créer un portlet JSR-168 avec un graphique?
- 28. Pages multiples dans le portlet
- 29. Accéder au contenu Web de Liferay depuis un portlet?
- 30. WPF Portlet like Layout Control