Выведите строки JCoTable, используя EL <C: forEach>

Я создал веб-приложение на Java, которое считывает пользовательскую таблицу (состоящую из 13 полей на запись) из бэкэнда SAP в JCoTable в веб-приложении, и все это прекрасно работает.

Мое требование - вывести все записи в JCoTable на JSP, используя EL. Как мне ссылаться на каждое отдельное поле для целей вывода? т.е.

<c:forEach items="${claimstable}" var="clms">
      ${clms.field1}
      ${clms.field2}
      ${clms.field3}  
</c:forEach>

Я пытался использовать ArrayList, TreeSet и HashMap для вывода содержимого таблицы на JSP, используя сервлет для пересылки по атрибуту запроса в JSP, но я не могу напрямую получить доступ к каждому полю, я могу вывести содержимое только как одну длинную строку,

Нужно ли создавать класс из имен полей моей таблицы и действовать таким образом? Или что?

Любая помощь очень ценится.

2 ответа

Решение

Решение, которое я выбрал, состояло в том, чтобы создать объект моей пользовательской таблицы с помощью сеттеров, а геттеры создают каждое поле как свойство внутри объекта, т.е.

public class ClaimTableProperties {


private String zuonr;
private String bktxt;
private String blart;
private String belnr; 
...etc.

и затем сопоставьте каждую строку JCoTable для каждого поля с массивом:

static ArrayList<ClaimTableProperties> claimstable = new ArrayList<ClaimTableProperties>();

    JCoTable claims = function.getTableParameterList().getTable("CLAIM_DETAILS");

    claims.firstRow();
    int rownums = claims.getNumRows();
    ClaimTableProperties[] ctp = new ClaimTableProperties[rownums];

    for (int i = 0; i < rownums; i++) {
            ctp[i] = new ClaimTableProperties();
            ctp[i].setBelnr(claims.getString("BELNR"));
            ctp[i].setBktxt(claims.getString("BKTXT"));
            ctp[i].setZuonr(claims.getString("ZUONR"));
            ctp[i].setBlart(claims.getString("BLART")); 
            claimstable.add(ctp[i]);
            claims.nextRow(); 
    } // End for

В вашем сервлете установите атрибут так, чтобы он был известен вашему jsp

ArrayList<ClaimTableProperties> claims = dgc.returnClaimsTable();
request.setAttribute("claimstable", claims);

Затем на jsp используйте JSTL для вывода каждого обязательного поля:

<table>
<c:forEach items="${claimstable}" var="claim">
<tr>
<td>${claim.belnr}</td>
<td>${claim.bktxt}</td>
<td>${claim.zuonr}</td>
<td>${claim.blart}</td>
</tr>
</c:forEach>
</table>  

Сначала установите значения в запросе, а затем попробуйте получить к нему доступ в JSP

Сделай это в своем сервлете

List<List<Person>> claimstable= getItSomehow();
request.setAttribute("claimstable", claimstable);

Претензионная таблица будет доступна в jsp. Используйте двойной для каждой петли, чтобы пройти отдельную строку

Другие вопросы по тегам