Как переопределить(Struts 2 Text jsp tag), чтобы распечатать атрибут name в комментарии HTML? - PullRequest
2 голосов
/ 10 июня 2011

При использовании тега jsp <struts:text name="..."/> Struts 2 Text вы получаете текст из файла .properties на странице.

Например, если файл .properties содержит

foo.bar = This is the text.

Тег jsp <struts:text name="foo.bar"/> выведет

This is the text.

Теперь я хотел бы, чтобы все экземпляры <struts:text name="..."> в веб-приложении также выводили атрибут name внутри комментария HTML, например:

<!-- foo.bar -->This is the text.

Я попытался создать свой собственный файл тегов jsp (чтобы использовать вместо <struts:text>), который содержал

<%@attribute name="name" required="true"%>

<!-- ${name} --><struts:text name="${name}"/>

но это не работает, потому что <rtexprvalue> установлен в false для атрибута name тега struts:text.

Есть идеи, как этого добиться?

1 Ответ

1 голос
/ 15 июня 2011
# PROPERTIES
copyright.year=2011

(B): переопределить тему по умолчанию ( допустимо )

label.ftl

Добавить следующий код <!-- ${parameters.name?html} -->

<!-- ${parameters.name?html} -->

<label<#rt/>
...
</label>

.jsp

<s:label key="copyright.year" />

Вывод HTML:

2011

Источник HTML:

<!-- copyright.year -->
<label id="form_name_copyright_year">2011</label>

ИЛИ (не рекомендуется)

label.ftl только с 4 строками кода

<#if parameters.nameValue??>
<!-- ${parameters.name?html} --><#rt/>
<@s.property value="parameters.nameValue"/><#t/>
</#if>

Источник HTML:

<!-- copyright.year -->2011

(A)

/**
 * Overridden/replacement for {@link ActionSupport}.
 */
public class MyActionSupport extends ActionSupport {

    public String text(String fieldName) {
        return "<!-- " + fieldName + " --> " + getText(fieldName);
    }
}


public class MyAction extends MyActionSupport {

}

.jsp

<s:property value="text('copyright.year')" escapeHtml="false" />

Вывод HTML:

2011

Источник HTML:

<!-- copyright.year --> 2011
...