Как исправить пустые поля списка <MyClass>, переданного в jsp? - PullRequest
0 голосов
/ 17 апреля 2019

Мой базовый класс

@MappedSuperclass
public abstract class BaseEntity<T> implements Serializable {

    @Id
    @GeneratedValue
    protected T id;

    public T getId() {
        return id;
    }

    public void setId(T id) {
        this.id = id;
    }

}

Мой класс

public class Spravochnik extends BaseEntity {

    private List<String> columnName;
    private List<List<String>> stringsAndValues;

}

мой RowMapper

public class SpravochnikRowMapper implements RowMapper<Spravochnik> {
    @Override
    public Spravochnik mapRow(ResultSet rs, int arg1) throws SQLException {
        Spravochnik spr = new Spravochnik();
        ResultSetMetaData rsmeta = rs.getMetaData();
        List<String> columnNames = new ArrayList<>();
        List<List<String>> valuesInRows = new ArrayList<List<String>>();
        int columnCount = rsmeta.getColumnCount();

        for(int column = 1; column <= columnCount; column++){
            columnNames.add(rsmeta.getColumnName(column));
        }


        while(rs.next()) {
            List<String> values = new ArrayList<>();
            for(int column = 1; column <= columnCount; column++){
                values.add(rs.getString(column));
            }

            valuesInRows.add(values);
            }



        return spr;
    }
}

DaoImpl:

@Repository
public class SpravochnikDaoImpl implements SpravochnikDao {

    public SpravochnikDaoImpl(NamedParameterJdbcTemplate template) {
        this.template = template;
    }

    NamedParameterJdbcTemplate template;

    @Override
    public List<Spravochnik> findAll(String tableName) {
        return template.query("select * from "+ tableName, new SpravochnikRowMapper());
    }


}

Мой контроллер:

@Controller
@RequestMapping("/spravochnik")
public class SpravochnikController {

    @Resource
    SpravochnikService spravochnikService;

    @PostMapping(value = "/list")
    public String getSpravochniks(Model m, @RequestParam String tableName) {
        List<Spravochnik> spravList = spravochnikService.findAll(tableName);
        m.addAttribute("spravList", spravList);
        return "list";
    }

}

list.jsp

<c:forEach var="sprav" items="${spravList}">
    <tr>
       <td>
              Obj:${sprav}
              SpravId=${sprav.id}
       </td>

           <c:forEach var="mylist" items="${sprav.columnName}">
            value=${mylist}
           </c:forEach>

       <td>
         <c:forEach var="innerList" items="${sprav.stringsAndValues}">
           <c:forEach var="obj" items="${innerList}">
               value=${obj}
            </c:forEach>
      </c:forEach>
       </td>
    </tr>
</c:forEach>

home.jsp просто дает tableName, все в порядке, проходит правильно. Но всякий раз, когда я захожу в list.jsp после выбора имени таблицы из home.jsp, все переменные, кроме первой ($ sprav}, имеют значение null (не показано и равно null в отладчике). Как решить это? Заранее спасибо! Спасибо за ответ, но я использую @RequestParam, а не @FormParam ... и, как я уже говорил, последний jsp показывает, что существует некоторый объект ($ {sprav}) и $ {sprav.Id} и так далее. «т ... почему?

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