Установка текста действия на странице JSP в Struts2

#struts2

#struts2

Вопрос:

У меня есть в моем файле свойств:

 viewType.periodText=Period Report
viewType.periodValue=periodreport
  

и в JSP я делаю это:

 <s:radio theme="simple" name="webAcModel.reportView" 
list="#{'%{getText('viewType.periodValue')}':
      '%{getText('viewType.periodText')}'}"></s:radio>
  

но это выдает мне ошибку. Но если я сделаю это:

 <s:radio theme="simple" name="webAcModel.reportView" 
list="#{'periodreport':'Period Report'}"></s:radio>
  

все работает нормально.

Есть идеи, как я могу это сделать?

Ответ №1:

Слишком много символов. Нет необходимости в %{} inside #{} и поскольку getText возвращаемая строка '' тоже не нужна.

 <s:radio theme="simple" name="webAcModel.reportView"
          list="#{getText('viewType.periodValue'):
                  getText('viewType.periodText')}" />
  

Кстати, использование getText для отправленного значения с помощью переключателя — не лучший подход, IMO.

Комментарии:

1. спасибо, я не упомянул в вопросе, что существует также сетка, которая будет отображаться / скрываться на основе этих данных, а также запросы будут выполняться в соответствии с выбранным, поэтому, чтобы сделать его согласованным, я использовал этот подход.

2. @Haider: чтобы сделать его согласованным, вы должны использовать некоторый фиксированный ключ, а не свойство из пакета ресурсов. Не забудьте принять / проголосовать за ответы, которые вам помогли.

3. например, если я объявлю эти ключи в классе, например, class Constant { public String peridvalue = «periodreport» }, то как я его использую?

4. @Haider: объявите его как static final и используйте.

5. @Haider Одним из решений является установка некоторой переменной в вашем JSP, которая будет содержать требуемое значение (например, так: <s:set var="alias" value="@com.packagename.models.UsernameModel$UsernameTypes@ALIAS" /> ) и ссылаться на нее по мере необходимости (например Alias value: <s:property value="#alias" /> )