Разбивка на страницы через Struts2 с использованием библиотеки библиотек DisplayTag - PullRequest
2 голосов
/ 22 апреля 2009

Я хочу применить нумерацию страниц для некоторого класса моего приложения, в котором я использую spring, struts2 & hibernate. Здесь я вызываю класс действий из файла welcome.jsp. Имеет следующий код:

<s:form action="marketing/allCountry.action">  
         <s:submit value="Click"></s:submit>  
         </s:form>  

Теперь мой allCountry.action класс java имеет следующий код:

public String executeAction() throws Exception {
        try {
            countryList = new ArrayList<Country>();
            countryList = this.countrySecurityProcessor.findByAll(0, null, null, null, null, false, false, null, null, null, null, 0);
            System.out.println("countryList = "+countryList);
            return ActionSupport.SUCCESS;

        } catch (Exception ex) {
            return ActionSupport.ERROR;
        }
}

Он правильно выбирает данные, которые я подтвердил печатью объекта countryList. Но теперь я перенаправляю с SUCCESS на country.jsp. Код country.jsp:

<display:table list="countryList" requestURI="CountryAllAction" pagesize="3">
    <display:column property="id" title="ID" />
    <display:column property="name" />
</display:table>

Теперь во время выполнения моего приложения я получаю сообщение об ошибке во время выполнения, например:

javax.servlet.ServletException: javax.servlet.ServletException: Исключение: [.LookupUtil] Ошибка при поиске свойства "id" в типе объекта "Java.lang.String". Причина: неизвестное свойство 'id'

Каково решение этого типа ошибки?

Ответы [ 5 ]

2 голосов
/ 22 апреля 2009

В вашем действии должен быть получатель для вашего countryList.

List<Country> countryList = new ArrayList<Country>();

public String executeAction() throws Exception {
  try {
     countryList = this.countrySecurityProcessor.findByAll(0, null, null, null, null, false, false, null, null, null, null, 0);
     System.out.println("countryList = "+countryList);
     return ActionSupport.SUCCESS;

  } catch (Exception ex) {
     return ActionSupport.ERROR;
  }

}

public List<Country> getCountryList() {
  return countryList;
}
0 голосов
/ 25 августа 2009

Вам не нужно ничего делать, просто используйте переменную списка в имени отображаемого тега, т.е.

<display:table name="yourListnameinaction">

</display>
0 голосов
/ 01 июля 2009

Используйте следующий код. Вместо атрибута списка используйте атрибут name.

<display:table name="countryList" requestURI="CountryAllAction" pagesize="3">
 <display:column property="id" title="ID" />
 <display:column property="name" />
</display:table>
0 голосов
/ 23 апреля 2009

Вам нужно сделать "countryList" доступным для DisplayTag, например, делая что-то вроде:

   request.setAttribute("countryList", countryList);

в вашем действии (если нет более умного способа сделать это в Struts2). Я думаю, что вы можете получить запрос в своем действии, сделав его ServletRequestAware

Вам также необходимо убедиться, что у вашего класса Country есть свойства id и name.

0 голосов
/ 22 апреля 2009

Я не знаком со Struts2, но кажется, что DisplayTag не может найти ваш countryList в любой области.

Я не вижу, чтобы вы вводили countryList из или запрашивали. Если я не прав, может быть, вам нужно указать имя формы, как <display:table list="${yourStrutsFormName.countryList}" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...