Struts2: differenza di comportamento nei tag s:property, s:text nel caso di innerhtml
Questo è un esempio di come si comportano diversamente il tag s:property e il tag s:text quando all’interno della stringa che deve essere visualizzata sono presenti tag HTML.
Considero una action con una proprietà di tipo String[] il cui valore di ogni elemento è simile a questo: ”
links[0] = "<a href=\"www.google.it\">google</a>"; |
ovvero contiene codice HTML che posso volere essere visualizzato come tale oppure essere iniettato nella pagina:
private String[] links; public void setLinks(String[] links) { this.links = links; } public String[] getLinks() { return links; } public String execute() throws Exception { setLinks(new String[]{}"<a href=\"http://www.google.it\">google</a>", "<a href=\"http://www.twitter.com\">twitter</a>""); return SUCCESS; } |
Nella JSP di ritorno della action scrivo:
<ul> <s:iterator value="links" > <li><s:property /></li> </s:iterator> </ul> <ul> <s:iterator value="links" var="link"> <li><s:text name="link"/></li> </s:iterator> </ul> |
Il risultato che ottengo sono due liste, nella prima delle quali il codice html è visibile come tale, mentre nella seconda il codice html viene inettato all’interno della pagina, come innerhtml:
Utilizzando <s:property>:
-
<a href="www.google.it">google</a>
<a href="www.twitter.it">twitter</a>
Utilizzando <s:text>:
Leave a Reply