вызов метода действия из JSP

1

Просто... Мне нужно знать, выполняют ли эти атрибуты списка ту же работу или нет.

<s:select name="city" label="City" list="cities" listKey="id" listValue="name" />

а также

<s:select name="city" label="City" list="%{getCities()}" listKey="id" listValue="name" />

можем ли мы вызвать методы действий, подобные выше, если "да", что это правильный способ сделать это?

благодаря,

  • 1
    Оба метода верны, в чем ваша проблема?
  • 0
    где места, где мне нужно использовать знак «%» в атрибутах тегов Struts и является ли это необязательным для атрибутов?
Показать ещё 1 комментарий
Теги:
struts2
ognl

1 ответ

1

list="cities" и list="%{getCities()}" оба точно такие же. Оба вызова getter из List<City> cities в классе действий для чтения значения из valuestack.

Оба будут вызывать ошибку, если getter будет удален.

1. <s:select name="city" label="City" list="cities[0]" listKey="id" listValue="name" />

оценивается

a. <s:select name="city" label="City" list="%{cities[0]}" listKey="id" listValue="name" />

b. <s:select name="city" label="City" list="%{getCities().get(0)}" listKey="id" listValue="name" />

1, a & b одинаковы, потому что% заставляет оценивать OGNL. который будет запрашивать стек для определенного свойства.

OGNL поддерживает коллекции, поэтому мы можем использовать эти три.

Мы называем действия, когда мы используем особую потребность.

Например

 <s:url id="databaseList" action="fetch-citynames" />
 <sd:autocompleter key="search"
     href="%{databaseList}" name="searchText" />

Здесь fetch-citynames возвращают список json.

Также см. Эту ссылку

На самом деле я читаю отсюда

Изображение 174551

Основная причина заключается в том, что синтаксис %{} используется для принудительной оценки OGNL, где Struts иначе обрабатывал бы значение как строковый литерал.

Например,

  <s:property value="name" />

будет искать свойство имени в стеке значений, то есть значение, полученное вызовом getName().

Если вы хотите заставить его использовать буквенное значение "name", вам нужно будет использовать синтаксис %{} -

 <s:property value="%{'name'}" />

Но в случае <s:select list=""/> используется OGNL Collection Construction

Вот как методы вызова OGNL. См. Здесь

  • 0
    Они НЕ точно такие же.
  • 0
    Я указал ссылку, чтобы понять разницу ....
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню