Использование

#struts2 #html-entities #ognl

#struts2 #html-сущности #ognl

Вопрос:

У меня есть следующие вложенные теги struts 2 в jsp. Это внутри другого итератора, который, в свою очередь, находится внутри тега td для html-таблицы.

 <s:property value="#rule.value" />
<s:set var="blanks" value="''" />
<s:iterator value="(#rule.key.length()).{ #this }">
   <s:set var="blanks" value="%{#blanks   'amp;nbsp;'}" />
</s:iterator>
<s:property value="#blanks" />
  

Общая цель состоит в том, чтобы отобразить все значения свойств s:, которые вы видите в одной строке в браузере. Для некоторых тегов (например, textfield) вы можете изменить атрибут theme, и он не пытается напечатать все в отдельной строке. Но в любом случае, мне нужно, чтобы все было в одной строке в теге итератора.

Итак, что я пытаюсь здесь сделать, так это создать строку из nbsp. Длина такой строки будет меняться каждый раз, когда этот фрагмент кода повторяется. Когда я запускаю это, итератор выполняет правильное количество раз, но мой результат amp;nbsp;amp;nbsp;amp;nbsp; ….. столько раз, сколько повторяется цикл. Однако мне нужен вывод html-пробела для каждого nbsp. В конечном счете, мне нужно, чтобы в td было определенное количество символов, чтобы эта таблица и отдельная таблица синхронизировались при форматировании экрана.

Ответ №1:

Вы забыли escapeHtml .

 <s:property value="#blanks" escapeHtml="false" />  
  

или просто

 ${blanks}
  


escapeHtml / escape (Устарел) : по умолчанию true

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

1. Потратил так много времени на просмотр тега set и OGNL, что я пренебрег просмотром выходного тега property. Но это прямо там, в struts.apache.org/2.2.3/docs/property.html : escape/escapeHTML является атрибутом property. Хорошая работа, спасибо

Ответ №2:

Я не очень много знаю о тегах JSP, но я сталкиваюсь с ними время от времени… Вы когда-нибудь видели escapeXml="false" ? (используется в теге c:out)

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

1. Я буду смотреть в этом направлении. Конечно, выражения EL не могут встречаться в тегах struts 2 (это было бы решением, если бы они могли), но я поищу эквивалентную вещь в OGNL.

Ответ №3:

Просто используйте amp;nbsp; вместо amp;nbsp для упрощения форматирования и указания пробелов в любом месте, где вы хотите, в том числе и в struts framework, и избегая слишком больших сложностей.