Логический итератор Struts 1.1 над ArrayList объектов - PullRequest
2 голосов
/ 09 марта 2012

У меня есть ArrayList объектов, которые я читаю из текстового файла, RegistrationFormBean (); это тип элемента

    public List getuserList() throws IOException{

            InputStream input = new FileInputStream("log.txt");

                int i=0;

                String temp[]=new String[5];

                                          tmp= new RegistrationFormBean();
                BufferedReader in = new BufferedReader(new FileReader("log.txt"));

                while ((str = in.readLine()) != null) {

                              StringTokenizer st = new StringTokenizer(str,"\t\t");

                    while(st.hasMoreElements()){
                    temp[i]=st.nextElement().toString();
                                                }

                                                   tmp.setName(temp[0]);
                    tmp.setCognome(temp[1]);
                    tmp.setCitta(temp[4]);
                    tmp.setDdnascita(temp[2]);
                    tmp.setCodfisc(temp[3]);

                    userList.add(tmp);
                                        }
                in.close();

    return userList;
}

это страница jsp, которая должна перебирать возвращаемый массив и выводить атрибуты для каждого элемента массива

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld"   prefix="bean" %>
<jsp:useBean id="userList" scope="request" class="com.webagesolutions.struts.actions.query"/>



<html:html>
<HEAD>
<%@ page 
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="IBM WebSphere Studio">
<META http-equiv="Content-Style-Type" content="text/css">
<LINK href="theme/Master.css" rel="stylesheet" type="text/css">
<TITLE></TITLE>
</HEAD>

<BODY>
    <table border=1>
        <logic:iterate name="userList" id="nextElement" property="userList">
    <tr>
    <td><bean:write name="nextelement" property="name"/></td>
    <td><bean:write name="nextElement" property="cognome"/></td>
    <td><bean:write name="nextElement" property="ddnascita"/></td>
    <td><bean:write name="nextElement" property="codfisc"/></td>
    <td><bean:write name="nextElement" property="citta"/></td>  
    </tr>
    </logic:iterate>        
    </table>
</BODY>
</html:html>

Поэтому мне интересно, как получить доступ к элементам следующего элемента, предположим, что это свойство element.name element.cognome element.ddnascita (атрибуты элемента), если я определю некоторые методы получения в классе, который читает txt файл ? я должен ссылаться на тип элемента на странице JSP?

обратите внимание, что с кодом, который я написал, я напечатал только первый столбец, и он содержит "citta", который в моем tmp является последним атрибутом элемента, также я сделал отладку, и список загружается правильно, поэтому проблема, я полагаю, находится на странице jsp.

1 Ответ

3 голосов
/ 10 марта 2012

Вы можете использовать тег <nested:nest> для доступа к вложенным свойствам. Чтобы использовать его, вам нужно добавить taglib на странице JSP:

<%@ taglib uri="/tags/struts-nested" prefix="nested"%>

В вышеприведенном примере у вас есть userList в качестве списка родительских bean-компонентов, который имеет некоторые составные свойства, такие как cognome, и обычные свойства String, такие как name. Теперь начните итерацию userList следующим образом:

<nested:nest property="userList">
    <!-- 'name' is just plain String, does not need a nested iteration --> 
    <nested:write property="name"/> 

    <!-- but 'cognome' has some inner properties, we are interested in exploring -->
    <nested:iterate property="cognome">
         <nested:write property="somePropertyOfCognome"/>
    </nested:iterate>

</nested:nest>
...