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

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>